4.8二叉树与森林
树与二叉树
如何将一颗树转换为二叉树?
树的孩子兄弟法与二叉链表表示法都是用到两个指针,多以可以把孩子兄弟表示法理解成二叉链表。
孩子兄弟表示法:
孩子兄弟表示法理解成二叉链表。
树转化成二叉树的手动模拟方法:
1)将同一结点的各个孩子用线串联起
2)将每个结点的子树分支,从左到右,除了第一个以外全部删除。
二叉树转化成树的手动模拟方法:
1)将二叉树从上到下分层,并调节成水平。(每遇到左孩子则为为一层 )。
2)找到每一层的双亲结点(方法为它的上一层项链的那个结点就是双亲结点)。
3)将每一层结点的和其双亲相连,同时删除该双亲结点各个孩子结点之间的联系。
森林与二叉树
森林定义:是m(m>=0)棵互不相交的树的集合。
如何让将森林转换成二叉树:
1)将森林中每棵树都转换成二叉树
2)将第二棵树作为第一棵树的根结点的右子树,将第三棵树作为第二棵树的根结点的右子树…以此类推
如何让将森林转换成二叉树:
反复断开二叉树根结点的右孩子的右子树指针,存在根结点的有右孩子的二叉树为止。
树于森林的遍历:
树的遍历包含先序和后序: