目录
一:什么是树
2:树的定义
那么 从直观上来看
二:树的基本术语
各种不同的树 :
三 :二叉树
1:为啥要研究二叉树而不是树?
二叉树的定义:
注意:二叉树和树
三:数和二叉树的抽象数据类型定义
四:二叉树的性质
五:两种特殊的二叉树
归纳法证明
六:二叉树的顺序存储表示
七:链式存储结构
八:遍历二叉树和线索二叉树
8.1算法实现: 利用递归
利用栈![](https://i-blog.csdnimg.cn/blog_migrate/e8f4de71f79279390074511fa06a7188.png)
利用队列![](https://i-blog.csdnimg.cn/blog_migrate/99fecff6df9e719522457051efa81b75.png)
层次遍历
九:二叉树遍历算法的应用
1:建立二叉树![](https://i-blog.csdnimg.cn/blog_migrate/9207ec93fc891f03c98e6b9d41ca1322.png)
代码
2:复制二叉树
3计算二叉树深度
4:计算总结点个数
5:计算叶子结点个数
十:线索二叉树(省略)
十一:树和森林
树是什么?
1 树的存储结构 -双亲表示法
2 树的存储结构 孩子链表
3:带双亲的孩子链表
4:孩子兄弟表示法
向右的都是兄弟 都是谁儿子?
11.1:树和森林 二叉树 树 森林
1:树 -> 二叉树![](https://i-blog.csdnimg.cn/blog_migrate/2f45f42d7ccf57bd0800a117b4f36a0c.png)
为啥要旋转 ?好看!
2:二叉树变树
我的口诀:向右的都是兄弟 ,兄弟断线 找父母
左孩右右连双亲,
去掉原来右孩线。
3:森林变为二插树
实例:
4:二叉树变为森林
11.2 树和森林的遍历
1:先序遍历实例
2:中序遍历(类似后跟)
十二:哈夫曼树
引入:
怎么设计比较过程使得 路程最小
12.1 哈夫曼树的概念
哈夫曼树 的特点:![](https://i-blog.csdnimg.cn/blog_migrate/f7ee7c08afbecb69cda7a167cb5acedd.png)
是完全二叉树 带权路径长度最短
12.2 哈夫曼树的构造方法
why? 1 :构造了新的n-1个结点 2:都是2个结点造新树
12.2.2 实例:
12.3 哈夫曼树构造算法的实现
第一步:构造森林全是根 (2n-1个根)
第二步:选择两小造新树
第三步:删除量小添新人 (√)
第四步:重复2,3步
代码:先初始化 后构造
然后构造
实例: