树(堆)

简介: 一、树的定义树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。树具有的特点有:(1) 每个节点有0个或者多个子节点(2)没有父节点的节点称之为根节点(3)每一个非根节点有且只有一个父节点(4)除了根节点外,每个子节点可以分为多个不想交的树若一个结点有子树,那么该结点称为子树根的“双亲”,子树的根称为该结点的“孩子”。

一、树的定义

树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。

img_eb918007b24524a07a2bc82355034db2.png

树具有的特点有:

(1) 每个节点有0个或者多个子节点

(2)没有父节点的节点称之为根节点

(3)每一个非根节点有且只有一个父节点

(4)除了根节点外,每个子节点可以分为多个不想交的树

若一个结点有子树,那么该结点称为子树根的“双亲”,子树的根称为该结点的“孩子”。有相同双亲的结点互为“兄弟”。一个结点的所有子树上的任何结点都是该结点的后裔。从根结点到某个结点的路径上的所有结点都是该结点的祖先

结点的度:结点拥有的子树的数目

叶子结点:度为0的结点

分支结点:度不为0的结点

树的度:树中结点的最大的度

层次:根结点的层次为1,其余结点的层次等于该结点的双亲结点的层次加1

树的高度:树中结点的最大层次

森林:0个或多个不相交的树组成。对森林加上一个根,森林即成为树;删去根,树即成为森林。

二、二叉树

1、二叉树的定义

二叉树是每个结点最多有两个子树的树结构。它有五种基本形态:二叉树可以是空集;根可以有空的左子树或右子树;或者左、右子树皆为空。

img_72381f6ed009a47d4da399a64245e35c.png

2、二叉树的性质

性质1:二叉树第i层上的结点数目最多为2i-1(i>=1)

性质2:深度为k的二叉树至多有2k-1个结点(k>=1)

性质3:包含n个结点的二叉树的高度至少为(log2n)+1

性质4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1


3、性质4的证明

性质4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1

证明:因为二叉树中所有结点的度数均不大于2,不妨设n0表示度为0的结点个数,n1表示度为1的结点个数,n2表示度为2的结点个数。三类结点加起来为总结点个数,于是便可得到:n=n0+n1+n2 (1)

由度之间的关系可得第二个等式:n=n0*0+n1*1+n2*2+1即n=n1+2n2+1 (2)

将(1)(2)组合在一起可得到n0=n2+1

三、满二叉树

1、满二叉树

定义:高度为h,并且由2h-1个结点组成的二叉树,称为满二叉树

img_cfdb9000d2acfa8d63cc8e68cb7c7cad.png

2、完全二叉树

定义:一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下层的叶结点集中在靠左的若干位置上,这样的二叉树称为完全二叉树。

特点:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。显然,一棵满二叉树必定是一棵完全二叉树,而完全二叉树未必是满二叉树。

img_ef64854c8cd9ff420246246e8fc8728f.png

3、二叉查找树

定义:二叉查找树又被称为二叉搜索树。设x为二叉查找树中的一个结点,x结点包含关键字key,结点x的key值计为key[x]。如果y是x的左子树中的一个结点,则key[y]<=key[x];如果y是x的右子树的一个结点,则key[y]>=key[x]

img_529488b61eca1ef052e5e68079c49771.png

在二叉查找树种:

(1)若任意结点的左子树不空,则左子树上所有结点的值均小于它的根结点的值。

(2)任意结点的右子树不空,则右子树上所有结点的值均大于它的根结点的值。

(3)任意结点的左、右子树也分别为二叉查找树。

(4)没有键值相等的结点。

四:二叉树的遍历:前序、中序、后序(前中后指的是每个子节点的父节点的次序)

img_8feaee8e695e3f8da52c9c1531a14a4c.png

前序:1,2,4,5,2,6,7

中序:4,2,5,1,6,2,7

后序:4,5,2,6,7,2,1

相关文章
|
7月前
|
存储 算法
【数据结构】堆,堆的实现,堆排序,TOP-K问题
数据结构——堆,堆的实现,堆排序,TOP-K问题
63 1
【数据结构】堆,堆的实现,堆排序,TOP-K问题
|
8月前
|
存储 算法 分布式数据库
4.堆_树(汇总版)
4.堆_树(汇总版)
|
8月前
|
存储
数据结构学习记录——什么是堆(优先队列、堆的概念、最大堆最小堆、优先队列的完全二叉树表示、堆的特性、堆的抽象数据类型描述)
数据结构学习记录——什么是堆(优先队列、堆的概念、最大堆最小堆、优先队列的完全二叉树表示、堆的特性、堆的抽象数据类型描述)
207 2
TU^
|
9月前
|
存储 机器学习/深度学习 算法
数据结构~~二叉树-堆
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
TU^
53 1
|
9月前
|
存储
二叉树——堆详解
二叉树——堆详解
|
9月前
|
存储 算法 索引
[数据结构]——二叉树——堆的实现
[数据结构]——二叉树——堆的实现
|
9月前
|
存储 算法
树和二叉树的基本概念和堆的实现
树和二叉树的基本概念和堆的实现
75 3
|
9月前
|
机器学习/深度学习 算法
二叉树-堆应用(2)
二叉树-堆应用(2)
59 1
|
9月前
|
存储 C语言
二叉树-堆
二叉树-堆
62 0
|
9月前
二叉树-堆应用(1)
二叉树-堆应用(1)
54 0