首页 > 试题广场 >

已知二叉树A(B(,D(F,H)),C(,E(G(I))))

[不定项选择题]
已知二叉树A(B(,D(F,H)),C(,E(G(I)))),由此二叉树转换的森林描述正确的是(      )
  • 该森林包含两棵树
  • 该森林包含三棵树
  • 以A为根的树有两个孩子
  • 以A为根的树有三个孩子
先根据题目画出树,然后根据左孩子右兄弟的原则把树拆开即可
发表于 2022-01-01 19:40:39 回复(0)

二叉树转换到森林方式是:若结点x是双亲y的左孩子,则把 x 的右孩子,右孩子的右孩子,…,都与 y 用连线连起来,最后去掉所有双亲到右孩子的连线。

发表于 2020-07-07 15:17:58 回复(0)
这样吗?
发表于 2019-06-10 09:32:43 回复(7)
这题分两步来完成
1.先从广义表得到这棵二叉树的结构
2.二叉树转森林

对于第一步需要明白广义表的括号表示的就是树的层次,同一括号内属于同一层,上面这个例子中,最外面是A,它是最高一层,就是根结点,然后括号中便是下一层,也就是它的左子树和右子树,类似的分析这一层,我们可以发现B和C的地位又是在这一层的最外面,所以B和C分别就是A的左右子树的根节点,类似的可以进行后面的分析。需要注意的就是B的子树那一层中,第一个是逗号,这就是表示B没有左孩子。分析完就可以画出这棵二叉树。

上面有老哥给出了图,可以参考图来分析。

对于第二步,二叉树转森林,需要明白的就是二叉链表来表示树的结构,由于我们无法知道有多少个孩子,而只有两个分叉,所以解决办法就是左分支表示该结点的左孩子,而右分支是它的兄弟,也就是孩子兄弟表示法。
明白这一点,我们对二叉树根结点A进行分裂,A的右孩子是C,C的右孩子是E,说明C和E都是A的兄弟,也就意味着它们都是和A一样的地位,是森林中一棵树的根,所以断开之后就得到了三棵树。B选项正确。
再分析树A,A的左孩子是B,按照刚才所说,这是A的一个孩子,而B的右孩子是D,D是B的兄弟,也就是A的第二个孩子,同理H是A的第三个孩子,而F由于是D的左子树上,所以它是D的孩子。分析完毕,我们发现A为根的树有三个孩子,D正确。
发表于 2019-06-23 14:55:13 回复(5)
卧槽,完美错过答案。。。。
发表于 2019-11-10 19:42:47 回复(2)

二叉树转换为森林

  1. 从根结点开始 若右孩子存在,则把与右孩子结点的连线删除,再查看分离后的二叉树,若右孩子存在,则连续删除除……,直到所有右孩子连线都删除为止,得到分离的二叉树

  2. 再将每棵分离后的二叉树转换为树

二叉树转换为树

二叉树转换为树是树转换为二叉树的逆过程

  1. 加线。若某结点的左孩子结点存在,则将这个左孩子的右孩子结点、右孩子的

右孩子结点、右孩子的右孩的右孩子结点...., 是左孩子的n个右孩子结点都作为此结点的孩子。将该结点与这些右孩子结点用线连接起来。

  1. 去线。删除原二叉树中所有结点与其右孩子结点的连线。

  2. 层次调整

参考:

《大话数据结构》6.11.3 树转换为二叉树

《大话数据结构》6.11.4 二叉树转换为深林

编辑于 2019-06-08 12:29:30 回复(0)
😩😩😩😩
发表于 2022-03-21 16:15:09 回复(0)
感觉这说法特别奇怪,“以A为根的树有三个孩子”,一般都说某个节点有多少个孩子节点,某树有多少孩子,不应该包含树上所有节点吗?
发表于 2019-07-10 23:42:19 回复(0)
还原二叉树时注意看括号中的逗号,逗号左边是左节点,为空则左节点为空,逗号右边是右节点,为空,则右节点为空。
发表于 2023-11-08 20:01:22 回复(0)
题的那个都看不明白怎么写的
发表于 2020-05-09 20:11:03 回复(0)
是的
发表于 2020-04-15 19:50:25 回复(0)
bd
发表于 2020-03-27 20:56:31 回复(0)
左边是儿子,右边是兄弟,A右边有三个兄弟,所以有三棵树,左边是儿子
发表于 2019-09-25 11:45:52 回复(0)