参考:数据结构与算法基础(青岛大学-王卓)
传送门:
数据结构与算法_【1】概念引入(C++实现)
数据结构与算法_【2】线性表(顺序表链表)(C++实现)
数据结构与算法_【3】栈和队列(C++实现)
数据结构与算法_【4】串数组广义表(C++实现)
数据结构与算法_【5】树和二叉树(C++实现)
数据结构与算法_【6】树和森林(C++实现)
数据结构与算法_【7】哈夫曼树(C++实现)
数据结构与算法_【8】图(C++实现)
数据结构与算法_【9】查找(C++实现)
数据结构与算法_【10】排序(C++实现)
树和森林
1 树的存储结构
(1)双亲表示法:定义结构数组存放树的结点,每个结点含两个域(数据域和双亲域)
(2)孩子链表
(2)孩子兄弟表示法(二叉树表示法,二叉链表表示法相似)
2 树与二叉树的转换
将树转换为二叉树进行处理,利用二叉树的算法来实现对树的操作。
由于树和二叉树都可以用二叉链表作存储结构,则以二叉链表作媒介可以导出树与二叉树之间的一个对应关系。
树转换为二叉树:
二叉树转化为树:
3 森林与二叉树的转换
森林转换成二叉树:
二叉树转换成森林:
4 树和森林的遍历
4.1 树的遍历
(1)先根(次序)遍历:若树不空,则先访问根节点,然后依次先根遍历各棵子树
(2)后根(次序)遍历,若树不空,则依次后根遍历各棵子树,然后访问根节点
(3)按层次遍历,若树不空,则自上而下自左至右访问树中每个结点
4.2 森林的遍历
先序遍历:
中序遍历:
例子: