1.二叉树的一些性质:

对于一棵非空二叉树,如果其叶节点数为n0,度为2的非叶节点数为n2,则n0=n2+1。 证明可以从边数的不同表示方法着手。

具有N个结点的完全二叉树的深度为log2(n+1)取上整。

2.满二叉树和完全二叉树

满二叉树的每一层节点都到达了最大个数,完全二叉树是从第一层到K-1层都是满的,最下面第K层或是满的,或是从右向左连续缺若干结点。

3.二叉树的存储表示

如果在数据处理过程中二叉树的大小和形态不发生剧烈的动态变化 ,适宜采用数组方式。对于完全二叉树来说,这种方式最简单最省存储,对于普通二叉树来说可能会造成很大的浪费。

对于形态剧烈变化的二叉树,可以采用链表存储。二叉链表是:存放data,左右子女结点指针。三叉链表还多了一个指向父结点的指针。二叉链表和三叉链表可以是静态指针结构,即把链表存放在一个一维数组中,数组中的每一个数组元素是一个结点,包括data,parent,leftchild,rightchild。

4.用广义表表示二叉树

如:  A(B(D,E(G,)),C(,F))#

*把如上所示的输入变成二叉树的算法。

5.二叉树的遍历算法

1)递归   前序、中序、后序   简单

后序遍历可以用来求树高;前序遍历可以用来实现复制构造函数,也可以用来判断两棵二叉树是否相等。

2)非递归

前序遍历:需要使用栈。  先把根节点push,while(栈不为空){pop,再  visit,把右子女结点push进栈,再把左子女结点push进栈  }

层遍历:    需要使用队列。  方法跟上面的差不多。

中序遍历:需要使用栈。  算法是:(大概写写)

stack s;

BinTreeNode p=root;

do{

while(p!=null){

s.push(p);

p=p.left;

}

if(!s.empty()){

s.pop(p);

visit(p);

p=p.right;

}

}while(p!=null || !s.empty());

后序遍历:     也要用到栈,但是要加一个flag记录是第一次访问到还是第二次访问到(即刚才是在左子树还是右子树)。

6.线索二叉树

利用空的leftChild域存放前驱结点指针,利用空的rightChild域存放后继结点指针。

7.树的存储表示

1)广义表  如R(A(D,E),B,C(F,G,H) )

2)  父指针表示法    一个数组,存放data和parentIndex

3)子女链表表示法    一个数组,存放data和一条子女结点链表

4)长子-兄弟链表表示法  结点数据结构为   data,firstchild,nextSibling(下一个兄弟)

8.树的深度优先遍历和广度优先遍历

深度优先:通常有两种,即前序,后序

广度优先:用个队列

9.Huffman树

如图

*不唯一!

应用:

最优判定树,Huffman编码

转载于:https://blog.51cto.com/hyman1994/1663648

[数据结构复习]树_二叉树相关推荐

  1. 【数据结构】 树与二叉树的基本概念、结构特点及性质

    前言:本章内容主要是数据结构中树与二叉树的基本概念.结构特点及性质的引入. 文章目录 树的概念 树的特点: 树的常用术语: 树的表示: 代码创建: 树在实际中的应用: 二叉树的概念 特殊的二叉树 满二 ...

  2. 数据结构之树与二叉树

    数据结构之树与二叉树 1.树的概念及结构 1.1.什么是树? 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合.树是递归定义的.之所以把它叫做树是因为它看起来像 ...

  3. 【图解数据结构】树和二叉树全面总结(上)

    目录 一.前言 二.树的概念和定义 三.二叉树 1.基本概念 2.基本形态 3.性质 4.满二叉树 5.完全二叉树 四.存储结构 1.顺序存储 2.二叉链表 3.三叉链表 一.前言 学习目标:理解树和 ...

  4. 数据结构 5-0 树与二叉树总结

    前言 数据结构复习过程中最先遭遇的磕碰,这一章内容及其多,而且可以考得很难,不仅是代码题,填空题有些也很有难度.主要是四部分内容:树的基本概念.二叉树.树与森林.树的应用.题目以选择题为主,因为代码题 ...

  5. 数据结构-王道-树和二叉树

    [top] 树和二叉树 树:是\(N(N\geq0)\)个结点的有限集合,\(N=0\)时,称为空树,这是一种特殊情况.在任意一棵非空树中应满足: 有且仅有一个特定的称为根的结点. 当\(N>1 ...

  6. 天勤数据结构:树与二叉树(图解二叉树的三种遍历方式执行流程,超详细)

    数据结构(第六章) 树与二叉树 1. 树与二叉树的相互转换 2. 森林与二叉树的相互转换 3. 二叉树的遍历 3.1 层序遍历(广度优先遍历) 2. 深度优先遍历 3. 树转化为二叉树的遍历 将一颗 ...

  7. 数据结构:树与二叉树(一) 树的基本知识

    这篇文章给大家简单讲一下树. 1.树逻辑结构 (1)树(Tree)是一个非空的有限元素的集合,元素之间有如下关系:有且仅有一个特殊元素,它没有前驱(称为树根Root),其余元素都有且仅有一个前驱元素, ...

  8. 《王道》数据结构之树和二叉树(五)

    数据结构入门之树和二叉树(五) 大纲 一.树的概念和性质 1.1 树的概念 1.1.1 树的定义 1.1.2 结点分类与结点间关系 1.1.3 树的其他相关概念 1.2 (非空)树的性质 1.3 树的 ...

  9. 【C语言 - 数据结构】树、二叉树(上篇)

    树是计算机算法最重要的非线性结构.因为树能很好地描述结构的分支关系和层次特性,所以在计算机科学和计算机应用领域有着广泛的应用.这篇文章我就带大家一起了解一下树.二叉树这种结构,下篇文章会重点向大家介绍 ...

最新文章

  1. BOM 浏览器对象模型和DOM 文档对象模型
  2. 只需4步,自己搞个 Spring Boot Starter !
  3. 前端学python有什么用-原来 Python 还有这些实用的功能和特点!
  4. Codeforces 1336E Chiori and Doll Picking (子集和变换、线性基、阈值算法、状压 DP、组合计数)...
  5. object数据类型
  6. Hadoop大数据平台
  7. R实战 | 聚类分析
  8. java核心技术卷I 第4-5章
  9. 灰色预测模型python实例_12-6:数学模型(灰色模型)与Python编程预测
  10. python3 extract_model.py对应代码解读抽取式提取+生成式提取摘要代码解读------摘要代码解读3
  11. SpringBoot+MyBatisPlus+Vue+ElementUI实现前后端分离的物业管理系统
  12. 数列极限:重要极限 π 与 e
  13. IKexpression解读三
  14. 人工智能——归结演绎推理
  15. errorImg异常图片显示
  16. 网络存储(NAS)在智能家居中的地位
  17. java安全学习(一)
  18. 基于java医院门诊管理系统设计
  19. keil工具栏错乱,图标显示不正常,工具栏不小心删除,等keil界面问题
  20. android 9.0音量键功能开关(屏蔽音量加减功能)

热门文章

  1. shell脚本自动记录登陆后 的IP地址和历史记录
  2. 今天mtk笔试,没信心了
  3. Failure Groups in ASM
  4. 重构了一波代码,聊聊后端也聊聊游戏后端
  5. 张家界a货翡翠,酒泉a货翡翠
  6. Mac mysql sql_model引起的问题
  7. MySQL的binlog数据如何查看
  8. 《转》VMware vSphere 5.1 学习系列之四:安装 SQL Server 数据库
  9. mysql出现“Incorrect key file for table”解决办法
  10. iptables防DDOS***和CC***设置