什么是遍历
遍历(Traversal),是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。
1、二叉树基本结构
struct Node {
int value;
Node* left;
Node* right;
Node(int value):
value(value), left(nullptr), right(nullptr) {}
};
2、先序遍历
(DLR)也叫做先根遍历、先序遍历、前序周游,可记做根左右。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。
void preOrderRecur(Node* head) {
if (head == nullptr) {
return;
}
std::cout << head->value << ",";
preOrderRecur(head->left);
preOrderRecur(head->right);
}
3、中序遍历
(LDR),也叫做中根遍历、中序周游。在二叉树中,先左后根再右。巧记:左根右。
中序遍历是先访问左儿子---父亲---右儿子。
void inOrderRecur(Node* head) {
if (head == nullptr) {
r