二叉树的先根,中根,后根怎么算?

如题所述

这里的“先根”也叫做先序,“中”和“后”也一样。先序遍历是先访问当前节点,然后再遍历左子树,最后是右子树。中序遍历是先遍历左子树,再访问当前节点,最后是右子树。后序遍历是先遍历左子树,再遍历右子树,最后访问当前节点。

树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为节点)按分支关系组织起来的结构,很像自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。

树在计算机领域中也得到广泛应用,如在编译源程序如下时,可用树表示源源程序如下的语法结构。又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有层次关系的问题都可用树来描述。满二叉树,完全二叉树,排序二叉树。

扩展资料

计算机科学中,二叉树是每个节点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树

二叉树的每个节点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的 i -1次方个节点;深度为k的二叉树至多有2^(k) -1个结点;对任何一棵二叉树T,如果其终端结点数(即叶子结点数)为n0,度为2的节点数为n2,则n0 =n2 + 1。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-26
这里的“先根”也叫做先序,“中”和“后”也一样。
先序遍历是先访问当前节点,然后再遍历左子树,最后是右子树。
中序遍历是先遍历左子树,再访问当前节点,最后是右子树。
后序遍历是先遍历左子树,再遍历右子树,最后访问当前节点。例:
一棵二叉树的先根遍历为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。本回答被网友采纳
第2个回答  2013-08-26
应该是先序,中序,后序遍历吧先序就是先根节点,然后左子树,右子树中序就是先左子树,然后根节点,右子树后序就是先左子树,然后右子树,根节点 具体的可以看书