Chapter 3 树与二叉树
Chapter 3 树与二叉树

1- 二叉树
主要性质:
1 叶子结点数 = 度为2的结点数 + 1 
2 二叉树第i层上最多有 (i≥1)个结点
3 深度为k的二叉树最多有 个结点
2- 二叉树的链式存储结构&&遍历
1 链式存储结构

2 先序

3 中序

4 后序

3- 线索二叉树


4- 树、二叉树、森林之间的转换

5- 树和森林的遍历

6- 树与二叉树的应用
1) 二叉排序树(查找/搜索)BST == Binary Sort/Search Tree
1 插入:一定是叶结点
2 删除:
叶子->直接删
只有一棵子树->删掉后接上子树
既有左子树,又有右子树->找到右子树最左结点/左子树最右结点代替它,然后删去。
3 查找效率分析
l 二叉排序树的ASL,主要取决于树高。
l 与二叉查找判定树相似,但二分唯一,二叉不唯一。
l 当有序表静态查找时,宜顺序表存储
l 二分查找动态查找时,宜二叉排序树
2) 平衡二叉树(AVL树)
平均查找长度ASL O(log2n)
3) 哈夫曼树(最优二叉树)
产生最短前缀码
注:
1- 树的路径长度是所有路长度的总和
Huffman的带权路径长度:根结点到任意结点的路径长度(经过的边数)与该结点上权值的乘积。
2- 二叉树与度为2的树不同。
3- 三种遍历时间复杂度O(n)
二叉排序树O(logn)
AVL树O(logn)
4- 栈:递归->非递归
队列:层次遍历
5- 先、中序/中、后序/中、层序,可唯一确定一棵二叉树
6- 前、中线索二叉树不再需要栈的支持,后序线索二叉树仍需要
7- 平衡二叉树结点递推公式

Chapter 3 树与二叉树的更多相关文章
- Java数据结构之树和二叉树(2)
从这里始将要继续进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来 ...
- Java数据结构之树和二叉树
从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...
- lintcode :前序遍历和中序遍历树构造二叉树
解题 前序遍历和中序遍历树构造二叉树 根据前序遍历和中序遍历树构造二叉树. 样例 给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树: 2 / \ 1 3 注意 你可以假设树中不存 ...
- lintcode: 中序遍历和后序遍历树构造二叉树
题目 中序遍历和后序遍历树构造二叉树 根据中序遍历和后序遍历树构造二叉树 样例 给出树的中序遍历: [1,2,3] 和后序遍历: [1,3,2] 返回如下的树: 2 / \ 1 3 注意 你可 ...
- XJOI1559树转二叉树
树转二叉树 将一棵树转化成二叉树. 输入格式: 输入的信息,第一行一个数n,(n<=1000)是树的结点数,以下n行,第i+1行是第i个结点的信息,第一个整数,是该结点的特征数值,后列出所有孩子 ...
- 数据结构与算法系列研究五——树、二叉树、三叉树、平衡排序二叉树AVL
树.二叉树.三叉树.平衡排序二叉树AVL 一.树的定义 树是计算机算法最重要的非线性结构.树中每个数据元素至多有一个直接前驱,但可以有多个直接后继.树是一种以分支关系定义的层次结构. a.树是n ...
- python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)
python数据结构之树和二叉树(先序遍历.中序遍历和后序遍历) 树 树是\(n\)(\(n\ge 0\))个结点的有限集.在任意一棵非空树中,有且只有一个根结点. 二叉树是有限个元素的集合,该集合或 ...
- 数据结构与算法(C/C++版)【树与二叉树】
第六章<树与二叉树> 树结构是一种非线性存储结构,存储的是具有"一对多"关系的数据元素的集合. 结点: A.B.C等,结点不仅包含数据元素,而且包含指向子树的分支.例如 ...
- K:树、二叉树与森林之间的转换及其相关代码实现
相关介绍: 二叉树是树的一种特殊形态,在二叉树中一个节点至多有左.右两个子节点,而在树中一个节点可以包含任意数目的子节点,对于森林,其是多棵树所组成的一个整体,树与树之间彼此相互独立,互不干扰,但其 ...
随机推荐
- java反射快速入门
笔记记在了掘金,发现掘金的markdown编辑器比博客园样式要好看不少 https://juejin.im/post/5d4e575af265da03e4674e9f
- iOS开发NSMutableArray数组越界处理
#import "NSArray+CrashArray.h" #import <objc/runtime.h> @implementation NSObject (Un ...
- CSS表格属性
border-collapse:表格边框线合并,取值:collapse.
- ubuntu常见错误–Could not get lock /var/lib/dpkg/lock解决
ubuntu常见错误–Could not get lock /var/lib/dpkg/lock解决 通过终端安装程序sudo apt-get install xxx时出错: E: C ...
- Pycharm VS VS Code(个人使用感受)
Pycharm IDE (community enough!) 简单介绍:Pycharn的确是我刚开始学习python时,除了Visual Studio之外,上手的第二个IDE,最初是因其好看的界面, ...
- 2019牛客国庆集训派对day5
2019牛客国庆集训派对day5 I.Strange Prime 题意 \(P=1e10+19\),求\(\sum x[i] mod P = 0\)的方案数,其中\(0 \leq x[i] < ...
- winform程序捕获全局异常,对错误信息写入日志并弹窗
使用场景:在winform程序中如果没对方法进行try catch操作,若方法内出错,则整个程序报错并退出,如下图 如果程序已在客户手中,若没对错误的详细信息进行拍照,我们则不知道错误原因是什么.我们 ...
- svg path命令
参考:https://www.jianshu.com/p/c819ae16d29b https://www.cnblogs.com/guxuelong/p/7743736.html M ...
- Java后端WebSocket的Tomcat实现(转)
文章摘要随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信,扩展了浏览器与服务端 ...
- C++返回引用的需求
1.重载+=操作符返回*this或者某个参数的引用可以方便链式调用,比如C++流操作就是cout<< a << b << c这样的,就是靠不停返回stream的引用 ...