树——树的结构、遍历以及树和森林,二叉树的相互转化
目录
树的存储结构:
双亲表示法:
就比如说A,B,C的指针域都为0,表明其双亲的下标为0,即根节点R。
孩子链表:
如上图 A 的孩子是指向 3 和 5 位置的 D 和 E 。
特点:找孩子容易,找双亲难。
改进:将双亲表示法与孩子链表结合起来。
如:
如A,B,C的双亲为位于4位置的 R 。
这种还是为了操作方便而牺牲了空间,又多进行了存储。
孩子兄弟表示法:
举例:
找双亲还是难,也可以像上述一样增设一个双亲指针域。
树与二叉树的转换:
由于树和二叉树都可以用二叉链表作存储结构,则以二叉链表作媒介可以导出属于二叉树之间的一个对应关系。
举例:
树是通过兄弟表示法来转化为二叉链表的。
如果每次转化都需要先转化为二叉链表再进行转化的话,显然很麻烦。
简化:
树—>二叉树
举例:
二叉树—>树
举例:
森林和二叉树的转换:
森林—>二叉树
举例:
二叉树—>森林
举例:
树和森林的遍历:
树的遍历(三种方式)
森林的遍历(两种方式)
先序遍历:
即:依次从左到右对森林中的每一棵树进行先序遍历。
中序遍历:
即:依次从左到右对森林中的每一棵树进行后序遍历。
举例: