存储
B. 将线性存储的有效结点还原成以前的树
解决这两个问题
A. 可通过先(中/后)序转换成线性结构
B. 用无效结点将二叉树补充成完全二叉树
综上:
A. 只有完全二叉树才可以用连续的方式来存储
B. 存储一般二叉树, 必须要将其补充为完全二叉树
完全二叉树以连续的方式存储的
优点:
某个结点的子结点和父节点的编号都能计算出来.
因此,判断是否有子结点,查找其父/子节点 非常快.
缺点:
非常耗内存
![](https://img-blog.csdn.net/20130803145707140?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3VxaW5mZWlfY3M=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
转换方法:
保证任意一个结点
A. 左指针域指向它的第一个孩子
B. 右指针域指向它的下一个兄弟
只要满足此条件, 就可把普通树转换成二叉树
该二叉树一定没有右子树
![](https://img-blog.csdn.net/20130803145916109?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3VxaW5mZWlfY3M=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
1, 二叉树的存储
1) 连续存储[完全二叉树]
面临两个问题
A. 有效节点存到线性的结构(数组)B. 将线性存储的有效结点还原成以前的树
解决这两个问题
A. 可通过先(中/后)序转换成线性结构
B. 用无效结点将二叉树补充成完全二叉树
综上:
A. 只有完全二叉树才可以用连续的方式来存储
B. 存储一般二叉树, 必须要将其补充为完全二叉树
完全二叉树以连续的方式存储的
优点:
某个结点的子结点和父节点的编号都能计算出来.
因此,判断是否有子结点,查找其父/子节点 非常快.
缺点:
非常耗内存
2) 链式存储
如图. 很容易理解2, 一般树的存储
1) 双亲表示法
求父节点方便
2) 孩子表示法
求子结点方便
3) 双亲孩子表示法
求父结点子结点都很方便
4) 二叉树表示法[孩子兄弟表示法]
把一个普通书转换成二叉树来存储转换方法:
保证任意一个结点
A. 左指针域指向它的第一个孩子
B. 右指针域指向它的下一个兄弟
只要满足此条件, 就可把普通树转换成二叉树
该二叉树一定没有右子树
3, 森林的存储
把森林转换为二叉树存储.森林的所有树的根结点相互为兄弟.