一、树转化为二叉树:
⑴加线——树中所有相邻兄弟之间加一条连线。·
(2)去线——对树中的每个结点,只保留它与第一个孩子结点之间的连线,删去它与其它孩子结点之间的连线。
(3)层次调整——以根结点为轴心,将树顺时针转动一定的角度,使之层次分明。
第三点可以直接记为“左是孩子,右是兄弟”
例:
二、森林转化为二叉树:
(1)将森林中的每一棵树转化为二叉树;
(2)第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树根节点的右孩子。
例:
三、二叉树转化为树和森林:
(1)加线——若某结点x是其双亲y的左孩子,则把结点x的右孩子、右孩子的右孩子、……,都与结点y用线连起来;
(2)去线——删去原二叉树中所有的双亲结点与右孩子结点的连线;
(3) 层次调整——整理由⑴、⑵两步所得到的树或森林,使之层次分明。
例:
四、树的遍历
先根(次序)遍历:
若树不空,则先访问根结点,然后依次先根遍历各棵子树。
后根(次序)遍历:
若树不空,则先依次后根遍历各棵子树,然后访问根结点。
五、森林的遍历
1、森林中第一棵树的根结点;
2、森林中第一棵树的子树森林;
3、森林中其它树构成的森林。
1.先序遍历:
若森林不空,则:
访问森林中第一棵树的根结点;
先序遍历森林中第一棵树的子树森林;
先序遍历森林中(除第一棵树之外)其余树构成的森林。
即:依次从左至右对森林中的每一棵树进行先根遍历。
2.中序遍历:
若森林不空,则
中序遍历森林中第一棵树的子树森林;
访问森林中第一棵树的根结点;
中序遍历森林中(除第一棵树之外)其 余树构成的森林。
即:依次从左至右对森林中的每一棵树进行后根遍历。