大家好,今天小编关注到一个比较有意思的话题,就是关于C语言六叉树的问题,于是小编就整理了3个相关介绍C语言六叉树的解答,让我们一起看看吧。
- 已知一棵二叉树的前序序列和中序序列分别是ABCDEFGHIJ和BAEDCHGIFJ,构造二叉树,并写出其后序序列?
- 一棵二叉树的先序遍历?
- 一棵二叉树的中序遍历序列为:DGBAECHF,后序遍历序列为:GDBEHFCA,则前序列遍历序列是?
已知一棵二叉树的前序序列和中序序列分别是ABCDEFGHIJ和BAEDCHGIFJ,构造二叉树,并写出其后序序列?
前序第一个必定是根,根就是A,
从中序中就能分出左、右子树了:B和EDCHGIFJ,这是中序
就可据此从前序中分出左、右子树了:B和CDEFGHIJ,这是前序了。
这样一个问题变成了两个同样的小问题了,递归下去不就解决了。
多动动脑筋就出来了
一棵二叉树的先序遍历?
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的右子树
一棵二叉树的中序遍历序列为:DGBAECHF,后序遍历序列为:GDBEHFCA,则前序列遍历序列是?
不知道你理解前,中,后序遍历的概念没?
前序遍历又叫先根遍历,就是先访问根再访问左子树再访问右子树。
中序就是先访问左子树再访问根再是右子树。
后根就是先访问左子树然后是右子树最后是根。
简单的讲就是,你看后序遍历序列为:GDBEHFCA,最后一个是A,说明A是根。然后再去看中序遍历序列为:DGBAECHF,看到A在中间,把DGBAECHF分成DGB和ECHF两部分,好,现在单独看这两个子树,左子树DGB和右子树ECHF。
同样后序遍历序列GDBEHFCA中,找到DGB这三个字母,发现它是这样排列的,GDB,因为它是后跟遍历,所以子树DGB的根是B,这时候,你通过观察中序的DGB和后序的GDB,发现中序的右边没有东西,所以得出:子树GDB没有右支。同样的道理,发现子树ECHF的根是C,左子树只有E,右子树是HF。
像这样一步步分析
那么结论就是前序遍历是ABDGCEFH。
你最好能画个图就好理解多了。
到此,以上就是小编对于C语言六叉树的问题就介绍到这了,希望介绍关于C语言六叉树的3点解答对大家有用。