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 树与二叉树的更多相关文章

  1. Java数据结构之树和二叉树(2)

    从这里始将要继续进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来 ...

  2. Java数据结构之树和二叉树

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  3. lintcode :前序遍历和中序遍历树构造二叉树

    解题 前序遍历和中序遍历树构造二叉树 根据前序遍历和中序遍历树构造二叉树. 样例 给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树: 2 / \ 1 3 注意 你可以假设树中不存 ...

  4. lintcode: 中序遍历和后序遍历树构造二叉树

    题目 中序遍历和后序遍历树构造二叉树 根据中序遍历和后序遍历树构造二叉树 样例 给出树的中序遍历: [1,2,3] 和后序遍历: [1,3,2] 返回如下的树: 2 /  \ 1    3 注意 你可 ...

  5. XJOI1559树转二叉树

    树转二叉树 将一棵树转化成二叉树. 输入格式: 输入的信息,第一行一个数n,(n<=1000)是树的结点数,以下n行,第i+1行是第i个结点的信息,第一个整数,是该结点的特征数值,后列出所有孩子 ...

  6. 数据结构与算法系列研究五——树、二叉树、三叉树、平衡排序二叉树AVL

    树.二叉树.三叉树.平衡排序二叉树AVL 一.树的定义 树是计算机算法最重要的非线性结构.树中每个数据元素至多有一个直接前驱,但可以有多个直接后继.树是一种以分支关系定义的层次结构.    a.树是n ...

  7. python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)

    python数据结构之树和二叉树(先序遍历.中序遍历和后序遍历) 树 树是\(n\)(\(n\ge 0\))个结点的有限集.在任意一棵非空树中,有且只有一个根结点. 二叉树是有限个元素的集合,该集合或 ...

  8. 数据结构与算法(C/C++版)【树与二叉树】

    第六章<树与二叉树> 树结构是一种非线性存储结构,存储的是具有"一对多"关系的数据元素的集合. 结点: A.B.C等,结点不仅包含数据元素,而且包含指向子树的分支.例如 ...

  9. K:树、二叉树与森林之间的转换及其相关代码实现

    相关介绍:  二叉树是树的一种特殊形态,在二叉树中一个节点至多有左.右两个子节点,而在树中一个节点可以包含任意数目的子节点,对于森林,其是多棵树所组成的一个整体,树与树之间彼此相互独立,互不干扰,但其 ...

随机推荐

  1. META标签的定义与使用(一、HTTP标题信息(http-equiv))

    META标签分两大部分:HTTP标题信息(http-equiv)和页面描述信息(name). 一.http-equiv类似于HTTP的头部协议,它回应给浏览器一些有用的信息,以帮助正确和精确地显示网页 ...

  2. --master-data 的作用

    Use this option to dump a master replication server to produce a dump file that can be used to set u ...

  3. Erlang学习记录:输入和输出

    输入和输出 输入和输出功能都被定义在io模块 输出功能非常常用,由于erlang项目没有可断点调试的IDE(或者说根本不需要),所以所有的调试操作都是由io输出 来调试的 io:get_line/1. ...

  4. yield支持的协程

    #_author:来童星#date:2019/12/12def consumer(name): print("--->start...") while True: new_b ...

  5. 微服务配置中心实战:Spring + MyBatis + Druid + Nacos

    在结合场景谈服务发现和配置中我们讲述了 Nacos 配置中心的三个典型的应用场景,包括如何在 Spring Boot 中使用 Nacos 配置中心将数据库连接信息管控起来,而在“原生”的 Spring ...

  6. 关于IDEA中maven项目中在pom.xml导入依赖报错的解决方法

    报错详情 今天使用springcloud中的hystrix做服务降级的时候,导入下面的依赖,出现红色波浪线的报错信息 <dependency> <groupId>org.spr ...

  7. js 当前时间和对比时间的比较

    <!DOCTYPE><html> <head> <meta charset="utf-8" /> <title>功能:当 ...

  8. echarts 默认柱状图每根柱子显示不同颜色(随机显示和定制显示)

    series: [{ name: '请求数', type: 'bar', //barGap: 60, barWidth: 140,//柱图宽度 //stack: 'sum',//堆叠效果 itemSt ...

  9. iOS开发UIMotionEffect运动视觉效果

    1.UIMotionEffect简介 在iOS7.0推出了UIMotionEffect运动视觉效果,就是从屏幕偏移不同角度.看到的效果不同! NS_CLASS_AVAILABLE_IOS(7_0) @ ...

  10. Java学习之继承关系内存分配

    假设有C继承B,B继承A; 继承会继承除private修饰的成员变量,方法.但不会继承构造器. 所以调用被继承下来的方法时,不需要指明主调者,但是调用构造器时,就需要指明主调者,那就是super.如果 ...