郝斌数据结构入门--P63-树的存储
完全二叉树:
先把一棵树转换为满二叉树,再把最底层最右边删掉,意味着下图黄色框可以删掉,不保存。剩下的一棵树就是完全二叉树。
为什么一个二叉树以数组的方式存储时,必须要求这个数是完全二叉树?
上图红色是真正的点(有效点)。如果只存放有效的点,无法确定这棵树是怎样构造出来的。别人不知道以前的树是怎样子的,所以不能只保留有效的点。
二叉树的存储
连续存储[完全二叉树]:
优点:查找某个节点的父节点和子节点速度很快(也包括判断有没有子节点)
缺点:耗用内存空间过大
链式存储
一般树的存储
双亲表示法:求父节点方便
孩子表示法:求子节点方便
双亲孩子表示法:求父节点和子节点都很方便
二叉树表示法:把一个普通树转化成二叉树来存储,
具体转换方法:设法保证任意一个节点的
左指针域指向它的第一个孩子
右指针域指向它的兄弟
只要能满足此条件,就可以把一个普通树转化为二叉树
一个普通树转化成的二叉树一定没有右子树
森林的存储