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:树、二叉树与森林之间的转换及其相关代码实现
相关介绍: 二叉树是树的一种特殊形态,在二叉树中一个节点至多有左.右两个子节点,而在树中一个节点可以包含任意数目的子节点,对于森林,其是多棵树所组成的一个整体,树与树之间彼此相互独立,互不干扰,但其 ...
随机推荐
- META标签的定义与使用(一、HTTP标题信息(http-equiv))
META标签分两大部分:HTTP标题信息(http-equiv)和页面描述信息(name). 一.http-equiv类似于HTTP的头部协议,它回应给浏览器一些有用的信息,以帮助正确和精确地显示网页 ...
- --master-data 的作用
Use this option to dump a master replication server to produce a dump file that can be used to set u ...
- Erlang学习记录:输入和输出
输入和输出 输入和输出功能都被定义在io模块 输出功能非常常用,由于erlang项目没有可断点调试的IDE(或者说根本不需要),所以所有的调试操作都是由io输出 来调试的 io:get_line/1. ...
- yield支持的协程
#_author:来童星#date:2019/12/12def consumer(name): print("--->start...") while True: new_b ...
- 微服务配置中心实战:Spring + MyBatis + Druid + Nacos
在结合场景谈服务发现和配置中我们讲述了 Nacos 配置中心的三个典型的应用场景,包括如何在 Spring Boot 中使用 Nacos 配置中心将数据库连接信息管控起来,而在“原生”的 Spring ...
- 关于IDEA中maven项目中在pom.xml导入依赖报错的解决方法
报错详情 今天使用springcloud中的hystrix做服务降级的时候,导入下面的依赖,出现红色波浪线的报错信息 <dependency> <groupId>org.spr ...
- js 当前时间和对比时间的比较
<!DOCTYPE><html> <head> <meta charset="utf-8" /> <title>功能:当 ...
- echarts 默认柱状图每根柱子显示不同颜色(随机显示和定制显示)
series: [{ name: '请求数', type: 'bar', //barGap: 60, barWidth: 140,//柱图宽度 //stack: 'sum',//堆叠效果 itemSt ...
- iOS开发UIMotionEffect运动视觉效果
1.UIMotionEffect简介 在iOS7.0推出了UIMotionEffect运动视觉效果,就是从屏幕偏移不同角度.看到的效果不同! NS_CLASS_AVAILABLE_IOS(7_0) @ ...
- Java学习之继承关系内存分配
假设有C继承B,B继承A; 继承会继承除private修饰的成员变量,方法.但不会继承构造器. 所以调用被继承下来的方法时,不需要指明主调者,但是调用构造器时,就需要指明主调者,那就是super.如果 ...