树、二叉树、满二叉树、完全二叉树

自由树

自由树是一个连通的,无回路的无向图。

令G=(V,E)为一个无向图。下面的表述是等价的。

1)        G是自由树。

2)        G中任意两个顶点由唯一一条简单路径得到。

3)        G是连通的,但从E中去掉任何边后得到的图都是非连通的。

4)        G是无回路的,且|E|=|V|-1。

5)        G是连通的,且|E|=|V|-1。

6)        G是无回路的,但添加任何边到E中得到的图包含回路。

二叉树

在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。

二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。

二叉树的第i层至多有2^(i-1)个结点;

深度为k的二叉树至多有2^k-1个结点;(等比数列1+2+4+…+2^(k-1) = 2^k-1)。

对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0 = n2 + 1。

树和二叉树的三个主要差别:

1)  树的结点个数至少为1,而二叉树的结点个数可以为0;

2)  树中结点的最大度数没有限制,而二叉树结点的最大度数为2;

3)  树的结点无左、右之分,而二叉树的结点有左、右之分。

满二叉树

一棵深度为k,且有2^k-1个节点的树是满二叉树。

另一种定义:除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。

这两种定义是等价的。

从树的外形来看,满二叉树是严格三角形的,大家记住下面的图,它就是满二叉树的标准形态:

所有内部节点都有两个子节点,最底一层是叶子节点。

性质

1)        如果一颗树深度为h,最大层数为k,且深度与最大层数相同,即k=h;

2)        它的叶子数是: 2^(h-1)

3)        第k层的结点数是: 2^(k-1)

4)        总结点数是: 2^k-1 (2的k次方减一)

5)        总节点数一定是奇数。

6)        树高:h=log2(n+1)。

完全二叉树

完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。

若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h 层所有的结点都连续集中在最左边,这就是完全二叉树。

(大家好好理解一下上面两个定义,是等价的~~)

满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。

下面是完全二叉树的基本形态:

完全二叉树的性质:

1)        深度为k的完全二叉树,至少有2^(k-1)个节点,至多有2^k-1个节点。

2)        树高h=log2n + 1。

对满二叉树、完全二叉树总结点及树高的总结:

原文地址:https://www.cnblogs.com/yzl050819/p/9649097.html

时间: 2024-10-10 09:04:20

树、二叉树、满二叉树、完全二叉树的相关文章

完全二叉树、理想二叉树满二叉树

完全二叉树(Complete Binary Tree): 设二叉树的深度为h,除第 h 层外,其它各层 (1-h-1) 的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树. 理想二叉树(Perfect Binary Tree): 除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的树称为理想二叉树.高度为h(从0开始算起)且包含2^(h+1)-1个节点的 二叉树是理想二叉树. 满二叉树(Full Binary Tree): 在国内实际上指的是上面提到的理想二叉树

二叉树&满二叉树与完全二叉树

二叉树的定义 二叉树(Binary Tree)是n(n≥0)个元素的有限集合,该集合为空或者为由一个称为"根"的元素及两个不相交的.被分别称为左子树和右子树的二叉树组成 二叉树的基本特点: 每个结点最多有两棵子树 左子树和右子树是有顺序的,且不可颠倒 图一 节点.度和叶子的概念 1.结点 二叉树中的每一个元素都称为结点.通常二叉树的许多名词借用了家族关系 例如在上图中,2.3均是1的子结点,1是2&3的双亲,因而2.3互为"兄弟结点" 2.度 二叉树的度代表

按层逆遍历一棵树,使用满二叉树存储

机试题:用C语言编写控制台程序.使用二叉树按层逆遍历输出树的每一个元素.(即从最底层 往 上输出 直到根节点)要求: 1,自定义数据结构.使用满二叉树存储输入数据.2,input: 0,1,2,3,4,5,6,7   output:7,3,4,5,6,1,2 ,0 分析:假如树的节点数目为num,则树高为:log(num)/log(2)+1,换底公司,log得到以2为底的log函数,其次int类型会自动截断,只保留整数 其次,假定根节点为第1层,则第i层的节点编号为:pow(2,i-1)~pow

【二叉树】 二叉树基础

在计算机科学中,二叉树是每个节点最多有两个子树的树结构.通常子树被称作"左子树"(left subtree)和"右子树"(right subtree).二叉树常被用于实现二叉查找树和二叉堆. 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒.二叉树的第i层至多有个结点:深度为k的二叉树至多有个结点:对任何一棵二叉树T,如果其终端结点数为,度为2的结点数为,则. 树和二叉树的三个主要差别: 树的结点个数至少为1,而二叉树的

如何判定一颗树是完全二叉树和满二叉树

满二叉树:一颗深度为k且有2^k-1个节点的二叉树称为满二叉树: 完全二叉树:对满二叉树的结点进行连续编号,约定编号从根结点起,自上而下,自左至右.深度为k的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树编号从1至n的结点对应时,称为完全二叉树.如图所示: 1. 判定完全二叉树.判定一棵树是不是完全二叉树的思路是广度遍历该二叉树,当出现NULL值时停止遍历,如果此时还有没有遍历到的结点,那么就说明该树非完全二叉树,因为有空洞.C++代码如下: #include "stdafx.

与满二叉树完全二叉树

去写很多,每个已对二进制树的主题,其中大部分都在完全二叉树,在哥斯达黎加的心脏完全然而二叉树一直很模糊的形式,原因是,我完全糊涂了二进制和满二叉树.实际上满二叉树是二叉树的一种特殊情况完全,由于满二叉树满.虽然完全不能代表全.所以,你应该想象塑造出它,外每一个节点都有两个孩子.而全然的含义则是最后一层没有满,并没有满. 以下贴定义: 满二叉树(Full Binary Tree): 除最后一层无不论什么子节点外.每一层上的全部结点都有两个子结点(最后一层上的无子结点的结点为叶子结点).也能够这样理

二叉树进阶之满二叉树和完全二叉树

转载请注明原文地址: 一:满二叉树 除了叶子结点无任何子节点外,每一层的结点都有两个子节点.也就是说:一棵满二叉树是一个完整的三角形 △  结构. 满二叉树的性质:若满二叉树的层数为L,结点数为N,则: N=2^L-1.(结点数为 2的层数次方 减一) 二:完全二叉树 完全二叉树:1:一棵树,除了叶子节点那一层,上面的各层一定是满的.当最后一层也是满的,则树是完全二叉树也是满二叉树. 2:叶子结点那一层,结点严格按照"从左往右"插入. 判断完全二叉树==

二叉树、平衡二叉树、完全二叉树、满二叉树 .

基本概念 结点的层次(Level)从根开始定义,根为第一层,根的孩子为第二层. 二叉树的高度:树中结点的最大层次称为树的深度(Depth)或高度. 二叉树 在计算机科学中,二叉树是每个结点最多有两个子树的有序树.通常子树的根被称作"左子树"(left subtree)和"右子树"(right subtree).二叉树常被用作二叉查找树和二叉堆.二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒.二叉树的第i层至多有2的(i

完全二叉树 满二叉树

概念 结点的层次(Level)从根开始定义,根为第一层,根的孩子为第二层. 二叉树的高度:树中结点的最大层次称为树的深度(Depth)或高度. 数据结构中,树的度是什么?  它是树内各结点的度的最大值. 为何节点的度? 结点拥有的子树数称为结点的度. 二叉树 在计算机科学中,二叉树是每个结点最多有两个子树的有序树.通常子树的根被称作"左子树"(left subtree)和"右子树"(right subtree).二叉树常被用作二叉查找树和二叉堆.二叉树的每个结点至多