数据结构之树2
二叉树储存结构
顺序结构
当你的树是完全二叉树时
几个基本操作
当你的二叉树不是完全二叉树时
因为要完成树的基本操作,你只能在对应空间储存
而且此时对应是否有自子节点
还要根据isEmpty来判断对应
节点
这样的空间利用率还低
所以树的顺序一般来说是不太实用的
只适用于完全二叉树
所以我们重点看书的链式储存
树的链式储存
n个节点
n-1个节点上面有指针指向
一共是2n个指针域
所以有n+1个空指针域
简单看下二叉树的初始化和插入新节点
其他定义方法
看情况
考研一般考不加父节点的
二叉树的先后中序遍历法
先序,中序和后序
对应的是节点的先中后
左一定在右后面
先序:根左右
中序:左根右
后序:左右根
先中后序
遍历一些例子
先序遍历的伪代码
可以推一下奥
中序
和后序都差不多
演示递归过程
现在栈顶的T=NULL
弹出栈
到前一个栈
前一个栈运行到126行
现在运行127行
就是D->G
访问G
124然后G!=NULL
到125访问G
然后到126没左NULL返回
G的栈
然后127也是NULL
返回G的栈
然后G的栈运行完了
弹出
其他都差不多是这样的过程
应用
访问树的深度
也是递归哦
二叉树的层次遍历
算法思想
1.借助一个辅助队列实现
2.入根节点,然后先入队其左节点后入队其右节点
3.后面的都相同循环出一个节点的同时入队其左节点和右节点
直至队列没有元素
代码实现
遍历序列构造二叉树
三序遍历的缺点
就是一个树对应一种遍历序列
但是
一个中序(或者前序或者后序)遍历不能确定唯一的二叉树
如图他们的三种二叉树的中序遍历法都相同
但是树不同
所以我们确定唯一的一棵树
需要前序,中序,后序
中的至少二个
才能确定