一棵二叉树的先序遍历
1、先序遍历第一个为树的根,先序遍历是先根再左子树最后右子树,第一个肯定是树的根,先画A,A再中序遍历中左右都有,说明A有左子树也有右子树。
2、然后看先序第一个值是B,在中序中为A的前面,所以B是A的左子树
3、继续看先序,接下来是C、D,C再中序中再B的前面,所以C是B的左子树,D在B后面,D是B的
4、接下来是E,E在中序是在D后面A前面,所以E是D的右子树
5、接着先序中是F,F在中序为A后面,是A的右子树
某二叉树的前序遍历节点访问顺序是abdgcefh中序遍历节点访问顺序是dgbaechf则其后序遍历的节点访问顺序
嗯,你第一步的划分是正确的a为根,dgb为左子树,echf为右子树接下来看左子树的前序遍历为bdgb首先被访问可以知道b为左子树的根,与a相连再看左子树的中序遍历dgbd和g都在b之前就被访问所以b和g应该在b的左子树上形状如下---a--/--b-/dg而dg的确定再根据前序遍历d先被访问则d为根再看中序遍历也是d先被访问可以确定g为d的右子树左边就可以确定出来了如果上面看懂了右边就很简单,一样的道理前序遍历cefh确定c为右子树的根再看中序遍历echfe为c的左子树,hf为c的右子树hf的确定在看前序遍历f先被访问f为根中序遍历h先被访问h为f的左子树整棵树就出来了如下图在做后序就是小菜一碟了
还没有评论,来说两句吧...