如图,数据结构问题,这个二叉树怎么转化为森林

2020-12-30 16:48:41 字数 2277 阅读 6364

1楼:旧同桌的你

记住左孩子右兄弟,a的左子树b是它的一个节点,b的右子树c是b的兄弟,同时也是a的一个节点,所以在a这棵树上有b和c两个节点;

a的右子树有d,d的右子树有g,所以a、d、g三者互为兄弟,也就是有a、d、g这三棵树;

d有一个左子树e,e有一个右子树f,所以e和f为d树下的两个节点

如图,求解第二题,将二叉树转换成相应的森林。数据结构

2楼:匿名用户

二叉树的根结点和左子树作为森林的第一棵树,剩下的按同样的方法卸下根结点和左子树作为第二颗树,以此类推;所以转换后的森林是:

如图。此二叉树转化为森林,应该怎么画,给个图 50

3楼:匿名用户

我可以给你画一个森林!你要这个森林几棵树

把二叉树转换为为森林 如图

4楼:匿名用户

树或森林与二叉树之间有一个自然的一一对应关系。任何一个森林或一棵树可惟一地对应到一棵二叉树;反之,任何一棵二叉树也能惟一地对应到一个森林或一棵树。

将树转换为二叉树:

树中每个结点最多只有一个最左边的孩子(长子)和一个右邻的兄弟。按照这种关系很自然地就能将树转换成相应的二叉树:1.

在所有兄弟结点之间加一连线2.对每个结点,除了保留与其长子的连线外,去掉该结点与其它孩子的连线。

将一个森林转换为二叉树:

具体方法是:1.将森林中的每棵树变为二叉树;2.因为转换所得的二叉树的根结点的右子树均为空,故可将各二叉树的根结点视为兄弟从左至右连在一起,就形成了一棵二叉树。

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

1.加线。若某结点x的左孩子结点存在,则将这个左孩子的右孩子结点、右孩子的右孩子结点、右孩子的右孩子的右孩子结点…,都作为结点x的孩子。将结点x与这些右孩子结点用线连接起来。

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

二叉树转换为森林:

假如一棵二叉树的根节点有右孩子,则这棵二叉树能够转换为森林,否则将转换为一棵树。

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

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

画出下图二叉树的中序线索二叉树并转化为森林,麻烦说一下解题过程

5楼:东风冷雪

中序线索二叉树 先根,在左子树,然后右子树。

左线索指向前一个结点,左线索指向后一个结点。

中序遍历 abcdefghi.

化成为森林,这个看一下书

6楼:ˉ海棠无香

上面那个答案说的是先序

数据结构中二叉树如何转化成深林

7楼:匿名用户

将一棵二叉树还原为树或森林,具体方法如下:

(1) 若某结点是其双亲的左孩子,则把该结点的右孩子、 右孩子的右孩子……都与该结点的双亲结点用线连起来。

(2) 删掉原二叉树中所有双亲结点与右孩子结点的连线。

(3) 整理由(1)、(2)两步所得到的树或森林, 使之结构层次分明。v

8楼:匿名用户

需要规定一下,比如左子树是儿子,右子树是弟弟,则遍历这棵二叉树,把每个节点复制到森林中,如果是二叉树父节点的左子树,就插在森林中对应二叉树父节点的左子树下,否则插入为该对应节点在森林中的父节点的子节点,刚好是该对应节点最大的弟弟。可以证明有多少个弟弟,这种顺序都不会变的。

数据结构的一道题,二叉树和森林的转化

9楼:匿名用户

题目看清楚啦,问的是森林中的父节点不是二叉树中的父节点

10楼:笑来到

兄弟是两个节点,你这同一个节点,没法构成兄弟关系啊

如何将二叉树转变为森林?

11楼:匿名用户

“左孩子,右兄弟”,凡是右子树都断开,就是森林了…

12楼:匿名用户

数据结构上应该有方法呀,有了方法就是把方法用一个编程语言描述下了,是吧?

13楼:匿名用户

写什么程序啊,这纯粹就一个理论问题。

如按左子-右兄弟的方法,二叉树和森林的计算机内部表示根本就是一样的,不用转换,就看你怎么用了。