疯狂Java——树和二叉树(第11章)

树代表一种非线性的数据结构。

术语:

叶子节点:没有子节点的节点,因此叶子节点不可作为父节点;

节点的度:节点拥有的子树的个数被称为该节点的度(degree);

树的度:树中所有节点的度的最大值就是该树的度;

节点层次:节点的层次从根开始算起,根的层次值为1,其余节点的层次值为父节点层次值加1;

树的深度(depth):树中节点的最大层次值称为树的深度或高度;

有序树与无序树:如果将树中节点的各个子树看成从左到右是有序的(即不能互换),则称该树为有序树,否则称为无序树。

父亲点表示法:每个子节点都记录它的父节点;(这种方式是从子节点着手)

孩子链表示法:每个非叶子节点通过一个链表来记录它所有的子节点。(这种方式是从父节点着手,特点:每个节点都可以快速找到它的所有子节点)如下图:

二叉树:每个节点最多只有两个子树的有序树。

满二叉树:如果一棵二叉树的深度为k,则其包含2k-1个节点。满二叉树如下图:

完全二叉树:一棵有n个节点的二叉树,按满二叉树的编号方式对他进行编号,若树中所有节点和满二叉树1-n编号完全一致,则称该树为完全二叉树。也就是说除最后一层外,其余层的所有节点都是满的。如下图:

二叉树性质:

1)在任何一棵二叉树中,如果其叶子节点的数量为N0,度为2的子节点数量为N1,则N0=N1+1;

2)具有N个节点的完全二叉树的深度为log2N+1;

二叉树的二叉链表存储的思想:让每个节点都能记住它的左、右两个节点。为每个节点增加left、right两个指针,分别引用该节点的左、右两个子节点。

二叉树的三叉链表存储的思想:让每个节点不仅记住它的左右节点,还能记住它的父节点,利用指针parent。

遍历二叉树

I、先序遍历:

1)访问根节点;

2)递归遍历左子树;

3)递归遍历右子树;

II、中序遍历:

1)递归遍历左子树;

2)访问根节点;

3)递归遍历右子树;

III、后序遍历:

1)递归遍历右子树;

2)访问根节点;

3)递归遍历左子树;

广度优先遍历:按层遍历;

时间: 2024-10-12 07:05:11

疯狂Java——树和二叉树(第11章)的相关文章

树和二叉树-第6章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第6章 树和二叉树 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       相关测试数据下载  链接? 数据包       本习题文档的存放目录:数据结构\▼配套习题解析\▼06 树和二叉树  

6-11-N皇后问题-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第6章  树和二叉树 - N皇后问题 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h        相关测试数据下载  链接? 无数据      

6-5-树的双亲表示法-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第6章  树和二叉树 - 树的双亲表示法 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.Scanf.c.SequenceStack.c    

6-1-二叉树顺序存储结构-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第6章  树和二叉树 - 二叉树顺序存储结构 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.Scanf.c        相关测试数据下载  链

6-4-线索二叉树-树和二叉树-第6章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第6章  树和二叉树 - 线索二叉树 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.Scanf.c        相关测试数据下载  链接? 数

Java 核心读书笔记 第11章

1. 异常 用户希望在出现错误时,程序能够采用一些理智的行为. 如果由于出现错误而使得某些操作无法完成,程序应该:  返回到一种安全状态,并能够进行一些其他的命令: 或者:允许用于保存所有操作的结果,并以适当的方式终止程序. 异常处理的任务:将控制权从错误产生的地方转移给能够处理这种情况的错误处理器. 异常分类:   Throwable: Error和Exception Error:描述饿了Java运行时系统的内部错误和资源耗尽错误.应用程序不应该跑出这种类型的对象.如果出现了这样的内部错误,除

第五章 树和二叉树

上章回顾 单链表的基本操作,包括插入.删除以及查找 双向链表和循环链表的区别 [email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 第五章 第五章 树和二叉树 树和二叉树 [email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 预习检查 什么是二叉树 树的遍历有哪几种方式 树有哪些应用 [email pr

数据结构笔记整理第5章:树和二叉树

第5章 树和二叉树 本章内容 本章主要介绍树.二叉树的概念,遍历方法以及应用等,本章在考研中是重点内容. 5.1 树相关的基本概念 树是一种非线性的数据结构,是若干结点的集合,有唯一的根结点和若干棵互不相交的子树构成.其中每一棵子树又是一棵树,也是由唯一的根结点和若干棵互不相交的子树组成的,由此可知:树的定义是递归的.树的结点数目可以为0,为0的时候是一棵空树. 结点:结点不仅包含数据元素,而且包含指向子树的分支. 结点的度:结点拥有子树的个数或者分支的个数. 树的度:树中各结点度的最大值. 叶

疯狂java 讲义第三章练习题---画圆

public class PaintRound{ /** * @author Dream_e. * @version v1.0 */ private int r;//圆的半径 PaintRound(int r){ this.r = r; } public void paint(){ int y = 2*r;//y的最大值为半径的2倍 int x = 0; int c = 0; int z = 2;//坐标轴递减量. for(int j = y; j >= 0; j-=z){ x = getX(r