什么是二叉树?二叉树拿来干什么?

作者&投稿:阴叙 (若有异议请与网页底部的电邮联系)
二叉树是用来干什么的?在软件工程方面有什么用途,请帮小弟举几个实例。~

二叉树常被用于实现二叉查找树和二叉堆。
在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”。
根据不同的用途可分为:
1、完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。
2、满二叉树——除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。
3、平衡二叉树——平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

扩展资料
深度为h的二叉树最多有个结点(h>=1),最少有h个结点。对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1。
有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系为若I为结点编号则 如果I>1,则其父结点的编号为I/2。如果2*IN,则无左孩子。如果2*I+1<=N,则其右孩子的结点编号为2*I+1。
参考资料来源:百度百科-二叉树

任何树和森林都可以转化成为二叉树,一旦转化成为二叉树就可以利用很多二叉树的性质。
树形结构在我们计算机中应用非常广,例如文件系统等等,而单纯的树形结构在计算机中很难实现,所以一般都会用二叉树的形式来实现一般的树。这样一举两得,既容易实现,又可以用二叉树的性质来处理数据。
所以阁下看一下你的《数据结构》课本,讲树的内容比较少,主要讲的是二叉树。

在计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的(i-1)次方个结点;深度为k的二叉树至多有2^(k) -1个结点;对任何一棵二叉树T,如果其终端结点数(即叶子结点数)为n0,度为2的结点数为n2,则n0 = n2 + 1。

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

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

2. 树的结点无左、右之分,而二叉树的结点有左、右之分。……
树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序时,可用树表示源程序的语法结构。又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有层次关系的问题都可用树来描述。

树的概述

树结构的特点是:它的每一个结点都可以有不止一个直接后继,除根结点外的所有结点都有且只有一个直接前趋。以下具体地给出树的定义及树的数据结构表示。
树的定义
树是由一个或多个结点组成的有限集合,其中:
⒈必有一个特定的称为根(ROOT)的结点;
⒉剩下的结点被分成n>=0个互不相交的集合T1、T2、......Tn,而且, 这些集合的每一个又都是树。树T1、T2、......Tn被称作根的子树(Subtree)。
树的递归定义如下:(1)至少有一个结点(称为根)(2)其它是互不相交的子树
1.树的度——也即是宽度,简单地说,就是结点的分支数。以组成该树各结点中最大的度作为该树的度,如上图的树,其度为3;树中度为零的结点称为叶结点或终端结点。树中度不为零的结点称为分枝结点或非终端结点。除根结点外的分枝结点统称为内部结点。
2.树的深度——组成该树各结点的最大层次,如上图,其深度为3;
3.森林——指若干棵互不相交的树的集合,如上图,去掉根结点A,其原来的二棵子树T1、T2、T3的集合{T1,T2,T3}就为森林;
4.有序树——指树中同层结点从左到右有次序排列,它们之间的次序不能互换,这样的树称为有序树,否则称为无序树。
树的表示
树的表示方法有许多,常用的方法是用括号:先将根结点放入一对圆括号中,然后把它的子树由左至右的顺序放入括号中,而对子树也采用同样的方法处理;同层子树与它的根结点用圆括号括起来,同层子树之间用逗号隔开,最后用闭括号括起来。如上图可写成如下形式:
(A(B(E(K,L),F),C(G),D(H(M),I,J)))

二叉树

1.二叉树的基本形态
二叉树也是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态:
(1)空二叉树——(a);

(2)只有一个根结点的二叉树——(b);
(3)只有左子树——(c);
(4)只有右子树——(d);
(5)完全二叉树——(e)
注意:尽管二叉树与树有许多相似之处,但二叉树不是树的特殊情形。

2.两个重要的概念
(1)完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的节点都连续集中在最左边,这就是完全二叉树。
(2)满二叉树——除了叶结点外每一个结点都有左右子叶且叶结点都处在最底层的二叉树,。

3.二叉树的性质
(1) 在二叉树中,第i层的结点总数不超过2^(i-1);
(2) 深度为h的二叉树最多有2^(h)-1个结点(h>=1),最少有h个结点;
(3) 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,
则N0=N2+1;
(4) 具有n个结点的完全二叉树的深度为int(log2n)+1
(5)有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:
若I为结点编号则 如果I<>1,则其父结点的编号为I/2;
如果2*I<=N,则其左儿子(即左子树的根结点)的编号为2*I;若2*I>N,则无左儿子;
如果2*I+1<=N,则其右儿子的结点编号为2*I+1;若2*I+1>N,则无右儿子。
(6)给定N个节点,能构成h(N)种不同的二叉树。
h(N)为卡特兰数的第N项。h(n)=C(n,2*n)/(n+1)。

4.二叉树的存储结构
(1)顺序存储方式
type node=record
data:datatype
l,r:integer;
end;
var tr:array[1..n] of node;
(2)链表存储方式,如:
type btree=^node;
node=record
data:datatye;
lchild,rchild:btree;
end;
5.普通树转换成二叉树
二叉树很象一株倒悬着的树,从树根到大分枝、小分枝、直到叶子把数据联系起来,这种数据结构就叫做树结构,简称树。树中每个分叉点称为结点,起始结点称为树根,任意两个结点间的连接关系称为树枝,结点下面不再有分枝称为树叶。结点的前趋结点称为该结点的"双亲",结点的后趋结点称为该结点的"子女"或"孩子",同一结点的"子女"之间互称"兄弟"。
普通树转二叉树,一般采用左“子女”右“兄弟”的方式来转化。
完全二叉树
对满二叉树,从第一层的结点(即根)开始,由下而上,由左及右,按顺序结点编号,便得到满二叉树的一个顺序表示。据此编号,完全二叉树定义如下:一棵具有n个结点,深度为K的二叉树,当且仅当所有结点对应于深度为K的满二叉树中编号由1至n的那些结点时,该二叉树便是完全二叉树。图4是一棵完全二叉树。

二叉树遍历

遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。
设L、D、R分别表示遍历左子树、访问根结点和遍历右子树, 则对一棵二叉树的遍历有三种情况:DLR(称为先根次序遍历),LDR(称为中根次序遍历),LRD (称为后根次序遍历)。
(1)前序遍历
访问根;按前序遍历左子树;按前序遍历右子树
(2)中序遍历
按中序遍历左子树;访问根;按中序遍历右子树
(3)后序遍历
按后序遍历左子树;按后序遍历右子树;访问根
(4)层次遍历
即按照层次访问,通常用队列来做。访问根,访问子女,再访问子女的子女(越往后的层次越低)(两个子女的级别相同)
特殊的二叉树
1. 完全二叉树
Complete Binary Tree
若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层从右向左连续缺若干结点,这就是完全二叉树。
2. 满二叉树
Full Binary Tree:
一个高度为h的二叉树包含正是2-1元素称为满二叉树。

  1、二叉树在图论中是这样定义的:二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。然而,没有足够的信息来区分左结点和右结点。如果不考虑连通性,允许图中有多个连通分量,这样的结构叫做森林。
  2、二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。
  二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2+1。
  一棵深度为k,且有2^k-1个节点称之为满二叉树;深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中,序号为1至n的节点对应时,称之为完全二叉树。



二叉树是一种二次有序树,但与二次有序树有区别。严格区别左右孩子的树。主要运用计算机领域


什么叫做二叉树?
节点:二叉树中每个元素都称为节点。度:二叉树的度表示节点的子树或直接继承者的数目,二叉树的度是一个子树或单子树。2度是两个孩子,或者左和右子树有两个叉树,最大度数为2。叶子:叶是叶节的缩写。叶子或叶子指的是网络结构中的计算机,它接收来自靠近中心的计算机而不是更远的计算机的信号。叶...

什么是二叉树?二叉树拿来干什么?
1、二叉树在图论中是这样定义的:二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。然而,没有足够的信息来区分左结点和右结点。如果不考虑连通性,允许图中有多个连通分量,这样的结构...

二叉树是什么
二叉树是一种树形数据结构。二叉树是每个节点最多有两个子节点的树结构。通常,每个节点有三个指针域:一个用于指向左子节点,一个用于指向右子节点,另一个用于指向父节点。在二叉树中,节点的左子节点和右子节点通常被称为左孩子和右孩子。节点之间的关系定义了从根节点到所有其他节点的路径。这种...

什么是二叉树
二叉树,每个节点有不大于2个的叶子结点,也就是0个,1个或2个叶子结点的树。平衡二叉树,一棵二叉搜索树(BST),它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

二叉树是什么意思?
二叉树是一种基于树结构的数据结构,其中每一个节点最多有两个后继节点。通常,这两个后继节点被称为左子树和右子树。在二叉树中,每一个节点可以有任意数量的前驱节点,也就是它的父节点。二叉树是一种非线性数据结构,它的节点之间的关系是通过连接边(link)实现的。每一个节点都可以有一个关键...

什么是二叉树,举一个二叉树的例子
详情请查看视频回答

二叉树什么意思
二叉树 (binary tree)是另一种树型结构,它的特点是每个结点至多只有二棵子 树 (即二叉树中不存在度大于 2的结点 ),并且,二叉树的子树有左右之分,其次序不能任意颠倒 .二叉树是一种数据结构 (有好多类型)从根节点开始,每一个节点都有2个或2个以下的子节点。在数据结构中用指针进行操作。...

什么是二叉树?
二叉树也是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态:(1)空二叉树——(a);(2)只有一个根结点的二叉树——(b);(3)右子树为空的二叉树——(c);(4)左子树为空的二叉树——(d);(5)完全二叉树——(e)注意:尽管二叉树与树有许多相似之处,但二叉树不是树的特殊...

二叉树是什么
二叉树是指计算机科学中每个结点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”。二叉树常被用于实现二叉查找树和二叉堆。 二叉树是一个连通的无环图,并且每一个顶点的度不大于3。

什么是二叉树
二叉树是树的一种,每个结点最多有两个孩子,分为左孩子和右孩子,如果每个结点都有两个孩子就称为完全二叉树,二叉树有多种遍历方式,分为先序,中序,后序三种,每种以根结点为标志。要想详细了解最好找一本数据结构图那章看看

济宁市19158565632: 什么是二叉树?二叉树拿来干什么? -
展宜亮菌: 1、二叉树在图论中是这样定义的:二叉树是一个连通的无环图,并且每一个顶点的度不大于3.有根二叉树还要满足根结点的度不大于2.有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点.然而,没有足够的信息来区分左结点...

济宁市19158565632: 二叉树的概念是什么送金币楼!
展宜亮菌: 在计算机科学中,二叉树是每个节点最多有两个子树的树结构.通常子树被称作“左子树”(left subtree)和“右子树”(right subtree).二叉树常被用于实现二叉查找树和二叉堆.二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒.二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2 1.一棵深度为k,且有2^k-1个节点称之为满二叉树;深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中,序号为1至n的节点对应时,称之为完全二叉树.

济宁市19158565632: pascal中二叉树是什么?怎么用,求程序
展宜亮菌: 2 二叉树 1.二叉树的基本形态: 二叉树也是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态: (1)空二叉树——(a); (2)只有一个根结点的二叉树...

济宁市19158565632: 二叉树 可以用来做什么 -
展宜亮菌: ★树的基本定义 1、树是n(n>=0)个结点的有限集 2、树的结点包含一个数据元素及若干指向其子树的分支 3、结点拥有的子树数称为结点的度 4、度为0的结点称为叶子或终端结点 5、树的度是树内各结点的度的最大值 6、结点的层次从根开始定义起,根为第一层,根的孩子为第二层 7、树中结点的最大层次称为树的深度或高度 8、如果将树中结点的各子树看成从左至右是有次序的(即不能互换),则称该树为有序树,否则称为无序树.在有序树中,最左边的子树的根称为第一个孩子,最右边的称为最后一个孩子.

济宁市19158565632: 关于数据结构的学习? -
展宜亮菌: 绪论一章没有出现在大纲的考察范围,但是把握了这章有助于对整个课程知识的理解.因此建议大家还是要把这一章复习一下.这一章中的考点及对其掌握程度如下:数据结构的基本概念 识记 数据的逻辑结构和存储结构,对后面的名词要能区...

济宁市19158565632: 为什么说二叉树不是树的特殊情况求大神帮助如题谢谢了
展宜亮菌: 尽管树和二叉树的概念之间有许多的类似,但它们是两个不同的数据结构.因为从定义来看,二叉树既不是只有两个子树的树,也不是最多只有两个子树的树、 树和二叉树最主要的区别是:二叉树中结点的子树要区分左子树和右字树,即使在结点只有一棵子树的情况下也要明确指出该子树是左子树还是右子树 你应该明白了吧

济宁市19158565632: 平衡二叉树的性质是什么?
展宜亮菌: 平衡二叉树(BalancedBinaryTree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树

济宁市19158565632: 多叉树转二叉树有什么好处? -
展宜亮菌: 利于在编程上的实现 由于多叉树的子节点浮动范围比较大 不利于判断和建指针而转化成二叉树之后就方便多了子节点只有左右(兄弟和子)两种,在建立指针,函数的时候都方便建立

济宁市19158565632: 思考题:为什么要对数据进行排序?为什么要把数据放到二叉树中? -
展宜亮菌: 你的问题需要考虑的因素还挺多的.首先,对数据进行排序的一个理由自然是可以更快速的进行查找.对于无序数据的查找需要复杂度为n的算法,即遍历所有数据,而对于有序数据,至少可以减少到logn.将数据放进二叉树中即是让数据保持...

济宁市19158565632: 二叉树的性质的理解?对任何一棵二叉树T,如果其终端结点数为n0,
展宜亮菌: 二叉树当中的结点只有度为0、1、2三种情况,度为0就是终端结点.构造二叉树的过程就是从原始结点开始“生长”结点的过程,初始状态下,原始结点就是终端结点,n0=1,n1=0,n2=0,每当一个原来的终端结点变成“1度结点”的时候只是把终端的位置向下移动了一点,n1 ,不影响n0和n2,而每当一个原来的终端结点变成“2度结点”的时候,原来的终端消失,增加两个终端,总效果就是n0 ,n2 ,所以二叉树当中的n0和n2总是同步增加,即总是满足n0=n2 1

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网