将树转换成二叉树(树变二叉树:兄弟相连留长子。)
树转换成的二叉树其右子树一定为空。
1、加线:在兄弟之间加一连线
2、抹线:对每个结点去除其与孩子之间的关系(第一孩子除外)
3、旋转:以树的根结点为轴心,顺时针转45°。
将二叉树转换成树
加线:若 p 结点是左孩子,则将 p 的右孩子、右孩子的右孩子、…沿分支找到的所有右孩子,都与 p 的双亲用线连起来。
抹线:抹掉原二叉树中双亲与右孩子之间的连线。
调整:将结点按层次排列,形成树结构。
二叉树变树:左孩右右连双亲,去掉原来右孩线。
将森林转换成二叉树
1.现将森林连接成树,然后将树变形,第一个孩子为左孩子,其余的为右子树
将森林转换成二叉树
1、将各棵树分别转换成二叉树。
2、将每棵二叉树的根结点用线相连。
3、以第一棵二叉树根结点为二叉树的根,再以根结点为轴心,顺时针旋转,构成二叉树型结构
森林变二叉树:树变二叉根相连。
将二叉树转换成森林
1. 抹线:将二叉树中根结点与其右孩子连线,及沿右分支搜索到的所有右孩子间连线全部抹掉,使之变成孤立的二叉树。
2. 还原:将孤立的二叉树还原成树。
二叉树变森林:去掉全部右孩线,孤立二叉再还原。
6.4.3 树与森林的遍历
树的遍历(先根、后根、层次遍历)
森林的遍历
森林由三部分构成:
1、森林中第一棵树的根结点;
2.森林中第一棵树的子树森林;
3.森林中其它树构成的森林。
先序遍历:若森林不空,则访问森林中第一棵树的根结点;
即:依次从左至右对森林中的每一棵树进行先根遍历。
中序遍历:若森林不空,则中序遍历森林中第一棵树的子树森林;
即:依次从左至右对森林中的每一棵树进行后根遍历。
先序遍历: A B C D E F G H I J
中序遍历: B C D A F E H J I G