[数据结构复习]树_二叉树
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.树的概念及结构 1.1.什么是树? 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合.树是递归定义的.之所以把它叫做树是因为它看起来像 ...
- 【图解数据结构】树和二叉树全面总结(上)
目录 一.前言 二.树的概念和定义 三.二叉树 1.基本概念 2.基本形态 3.性质 4.满二叉树 5.完全二叉树 四.存储结构 1.顺序存储 2.二叉链表 3.三叉链表 一.前言 学习目标:理解树和 ...
- 数据结构 5-0 树与二叉树总结
前言 数据结构复习过程中最先遭遇的磕碰,这一章内容及其多,而且可以考得很难,不仅是代码题,填空题有些也很有难度.主要是四部分内容:树的基本概念.二叉树.树与森林.树的应用.题目以选择题为主,因为代码题 ...
- 数据结构-王道-树和二叉树
[top] 树和二叉树 树:是\(N(N\geq0)\)个结点的有限集合,\(N=0\)时,称为空树,这是一种特殊情况.在任意一棵非空树中应满足: 有且仅有一个特定的称为根的结点. 当\(N>1 ...
- 天勤数据结构:树与二叉树(图解二叉树的三种遍历方式执行流程,超详细)
数据结构(第六章) 树与二叉树 1. 树与二叉树的相互转换 2. 森林与二叉树的相互转换 3. 二叉树的遍历 3.1 层序遍历(广度优先遍历) 2. 深度优先遍历 3. 树转化为二叉树的遍历 将一颗 ...
- 数据结构:树与二叉树(一) 树的基本知识
这篇文章给大家简单讲一下树. 1.树逻辑结构 (1)树(Tree)是一个非空的有限元素的集合,元素之间有如下关系:有且仅有一个特殊元素,它没有前驱(称为树根Root),其余元素都有且仅有一个前驱元素, ...
- 《王道》数据结构之树和二叉树(五)
数据结构入门之树和二叉树(五) 大纲 一.树的概念和性质 1.1 树的概念 1.1.1 树的定义 1.1.2 结点分类与结点间关系 1.1.3 树的其他相关概念 1.2 (非空)树的性质 1.3 树的 ...
- 【C语言 - 数据结构】树、二叉树(上篇)
树是计算机算法最重要的非线性结构.因为树能很好地描述结构的分支关系和层次特性,所以在计算机科学和计算机应用领域有着广泛的应用.这篇文章我就带大家一起了解一下树.二叉树这种结构,下篇文章会重点向大家介绍 ...
最新文章
- BOM 浏览器对象模型和DOM 文档对象模型
- 只需4步,自己搞个 Spring Boot Starter !
- 前端学python有什么用-原来 Python 还有这些实用的功能和特点!
- Codeforces 1336E Chiori and Doll Picking (子集和变换、线性基、阈值算法、状压 DP、组合计数)...
- object数据类型
- Hadoop大数据平台
- R实战 | 聚类分析
- java核心技术卷I 第4-5章
- 灰色预测模型python实例_12-6:数学模型(灰色模型)与Python编程预测
- python3 extract_model.py对应代码解读抽取式提取+生成式提取摘要代码解读------摘要代码解读3
- SpringBoot+MyBatisPlus+Vue+ElementUI实现前后端分离的物业管理系统
- 数列极限:重要极限 π 与 e
- IKexpression解读三
- 人工智能——归结演绎推理
- errorImg异常图片显示
- 网络存储(NAS)在智能家居中的地位
- java安全学习(一)
- 基于java医院门诊管理系统设计
- keil工具栏错乱,图标显示不正常,工具栏不小心删除,等keil界面问题
- android 9.0音量键功能开关(屏蔽音量加减功能)
热门文章
- shell脚本自动记录登陆后 的IP地址和历史记录
- 今天mtk笔试,没信心了
- Failure Groups in ASM
- 重构了一波代码,聊聊后端也聊聊游戏后端
- 张家界a货翡翠,酒泉a货翡翠
- Mac mysql sql_model引起的问题
- MySQL的binlog数据如何查看
- 《转》VMware vSphere 5.1 学习系列之四:安装 SQL Server 数据库
- mysql出现“Incorrect key file for table”解决办法
- iptables防DDOS***和CC***设置