前言
学习了如何利用前序遍历和中序遍历来重建二叉树,我就在思考是否知道了任意两种遍历方式,都能将二叉树重构出来呢?仔细研究了一晚,果然如此。
找规律
先看三种遍历方式
struct Tree{
int val;
Tree *left;
Tree *right;
};
void printTree(Tree *node,int mode){
if(node!=nullptr){
switch(mode){
case 1:
cout<<node->val<<",";
printTree(node->left, mode);
printTree(node->right, mode);
break;
case 2:
printTree(node->left, mode);
cout<<node->val<<",";
printTree(node->right, mode);
break;
case 3:
printTree(node->left, mode);
printTree(node->right, mode);
cout<<node->val<<",";
break;
default:
break;
}
}
}
代码不多说,都明白,1、2、3分别对应前、中、后序遍历。
首先最重要的一个规律就