二叉树的先序、中序、后续遍历:本质——递归
先序遍历:
首先,访问根结点;
其次,递归遍历左子树;
(左子树的根节点->左子树的左子树->左子树的左子树的根节点->(若无左)左子树的右子树->...->回溯)
(以下的递归含义同理)
其后,递归遍历右子树;
void preOrder (BinaryTreeNode * root /*确定根结点*/) {
if (root != NULL) {
cout<< root->value;// 输出根结点
preOrder(root->LeftChild); // 递归遍历左子树
preOrder(root->RightChild); // 递归遍历右子树
}
}
中序遍历:
首先,递归遍历左子树;
其次,输出根结点;
其后,递归遍历右子树。
void inOrder (BinaryTreeNode * root /*确定根结点*/) {
if (root != NULL) {
inOrder(root->LeftChild); //递归遍历左子树
cou