森林:是m棵互不相交的树的集合。
树:是n个结点的有限集。若n=0,称为空树。
树的存储结构:
双亲表示法
定义结构数组
存放树的结点,每个结点含两个域:数据域,双亲域。
孩子链表
孩子兄弟表示法
用二叉链表作树的存储结构,链表中每个结点的两个指针域分别指向其第一个孩子结点和下一个兄弟结点
树和二叉树的转换
将树转化为二叉树进行处理,利用二叉树的算法来实现对树的操作。
给定一棵树,可以找到唯一的一棵二叉树与之对应。
树变二叉树:兄弟相连留长子。
二叉树变树:左孩右右连双亲,去掉原来右孩线。
森林转换成二叉树:树变二叉根相连。
二叉树转换成森林:去掉全部右孩线,孤立二叉再还原。
树的遍历:
先根遍历:根子树
后根遍历:子树根
按层次遍历:自上而下自左至右
森林的遍历:
将森林看作由三部分构成:
森林中第一棵树的根结点
森林中第一棵树的子树森林
森林中其它树构成的森林
先序遍历:从左至右对森林中的每一棵树进行先根遍历。
中序遍历:从左至右对森林中的每一棵树进行后根遍历。