数据结构第6章 树(下)
§6.4 树和森林
6.4.1 树的储存结构
①父亲表示法(利用每个(除根)结点只有唯一的父亲的性质)
②孩子表示法(用广义表实现)
③孩子兄弟表示法(二叉链表指向第一个孩子结点和下一个兄弟结点)
6.4.2森林与二叉树的转换
二叉树和树都可以用二叉链作为储存结构(分别是孩子表示法和孩子兄弟表示法),给定一棵树,可以找到唯一的一棵二叉树与之对应。两者的物理结构是相同的,只是解释不同而已(旋转)。
任何一棵和树对应的二叉树,其右子树必空(因为根是没有兄弟的),在森林中可以利用这一性质把第二棵树的根结点看做第一棵树的根结点的兄弟
至此,森林或树与二叉树可以相互转换。
①森林转换成二叉树
如果F={T1,T2,…,Tm}是森林,则可以按如下的规则转换成一棵二叉树B=(root,LB,RB)。
⑴若F为空,即m=0,则B为空树。
⑵若F非空,即m!=0,则B的根root即为森林中第一棵树的根ROOT(T1);B的左子树LB是从T1中根结点的子树森林F1={T11,T12,…,T1m1}转换而成的二叉树;其右子树RB是从森林F’={T2,T3…Tm}转换而成的二叉树
②二叉树转换成森林
如果B=(root,LB,RB)是一棵二叉树,则可按如下规则转换成森林F={T1,T2,..,Tm}
⑴若B为空,则F为空。
⑵若B非空,则F中第一棵树T1的根ROOT(T1)即为二叉树B的