计算机二级 二叉树问题求解
- 提问者网友:一抹荒凉废墟
- 2021-03-14 18:39
越详细越好啊。。。。。。
- 五星知识达人网友:鱼忧
- 2021-03-14 18:50
所以看题中,假设一开始只有一个根节点(同时也是叶子节点),它的度为4,这时叶子节点数为1-1+4=4,这时有一个叶子节点度变成3,总的叶子节点数量就是4-1+3=6
类推下去,叶子节点总数为1+(4-1)+(3-1)+(2-1)*2+(1-1)*4=8
如果整理成另一个公式就是1+1*n1+2*n2...+m*nm-(n1+n2+n3...+nm),其中ni就是度为i的节点数量,用到题中就是1+1*4+2*2+3*1+4*1-(4+2+1+1)=8
- 1楼网友:不甚了了
- 2021-03-14 20:03
思想:主要就是前序和中序遍历中一步一步从前序(或后续)遍历中找出根,之后我们就可以在中序序列中区分左右子树,之后从区分出来的左右子树种,再回到前序中再找左子树的“根”,和右子树的”根“,在一步一步求到叶子节点为止,即可以将整棵二叉树的图形做出来!
方法:逐步找出二叉树的根和对应左右子树,循环至叶子节点即可,用你的题目的例题做例子,解题如下:
前序:abdegcfh
中序:dbgeachf
从前序序列,可见,该二叉树根是 a,
然后,在中序中找到 a,由中序序列,可看出,该树根的树左子树中序序列为:dbge
右子树中序序列为:chf
故:(加粗为二叉树的根,或者是对应子树的根结点)
先序:a(bdeg)(cfh),-------a是根,括号分出左右子树,左边括号为左子树,右边括号为右子树
中序:(dbge)a(chf)
再按照这样方法逐步找左、右子树的根,确定左右子树来找出该树的图形:之后是:
先序:a(b(deg))(c(fh))
-------b是对应二叉树的左子树的根,deg是b树的右子树,
-------c是对应二叉树的右子树的根,fh是树e的右子树
中序:(d(b)ge)a(c)hf)
再之,从前序中找b树和c树的左右子数,在中序中划分出来:
先序:a(b((d)eg))(c((f)h))-------d是对应左子树的根,f是对应右子树的根
中序:((d)b)ge)a(c)h(f))
最后,就是b树右子树ec的划分了,从前序中找到b树的右子树的根结点为 e;
先序:a(b((d)((e)g))(c((f)h))
中序:((d)b)g(e))a(c)h(f))
最后,从上述的二叉树的前序和中序我们可以明显看出该二叉树的图形为:
提示:懂了思想,还要自己动笔在纸上写写,按照这种方法自己去实践一下,慢慢方法就会熟悉的,自然就记住了,所以,请动笔哦!.^_^.