二叉树的先根,中根,后根怎么算?
- 提问者网友:我是女神我骄傲
- 2021-05-17 21:32
- 五星知识达人网友:渡鹤影
- 2021-05-17 23:06
这里的“先根”也叫做先序,“中”和“后”也一样。
先序遍历是先访问当前节点,然后再遍历左子树,最后是右子树。
中序遍历是先遍历左子树,再访问当前节点,最后是右子树。
后序遍历是先遍历左子树,再遍历右子树,最后访问当前节点。
例:
一棵二叉树的先根遍历为ABCDEFG,中根遍历为CBDEAGF,则其后根遍历为
:
1、先序遍历的第一个当前节点一定是根节点,所以A是根
2、由于中序遍历是先遍历完左子树再访问当前节点,所以可以看出中序序列在A之前的都是A的左子树中的节点,而在A之后是A的右子树的节点。
3、这样就分成了(cbde)a (GF),三个集合。
4、我们分别再看各个集合。cbde集合中最先在先序序列中出现的是B,这说明b在这个集合中应该是第一个出现的。所以右可以再分
********a
**b********(gf)
c**(de)
5、再看de,在先序序列中因为D在E前方,所以D肯定是E的父节点,现在剩下的就是判断E是D的左孩子还是右孩子。从中序序列中看,D仍然是在E的前方,说明E是D的右孩子。
********a
**b********(gf)
c***d
******e
6、最后剩下gf.和DE相似的判断方法,在先序序列中F在G前方,说明F是父节点,而在中序当中G在F前方,说明G是F的左孩子。
所以这颗二叉树应该是
********a
**b********f
c***d*****g
******e
7、二叉树出来了,后序的原理最上方讲了,剩下的就好办了。先左孩子,然后右孩子,最后当前节点。
8、当前节点为A时由于左右两个子树还没有访问所以要先访问完左右子树才能访问A.
9、b同A
10、c没有左右孩子,所以它是第一个。
11、c访问完了在访问b的右子树。
12、先访问d的孩子e,然后再是D。
13、b的左右孩子都访问完了,所以下一个是B。
14、访问完B,A的左子树访问完了,但是还是不能访问A,因为A的右子树还没有访问。
15、A的右子树中,G是F的孩子,所以先G再F。
16、最后是根节点A。
- 1楼网友:思契十里
- 2021-05-18 00:45
应该是先序,中序,后序遍历吧
先序就是先根节点,然后左子树,右子树
中序就是先左子树,然后根节点,右子树
后序就是先左子树,然后右子树,根节点
具体的可以看书