二叉树的深度怎么算
什么叫二叉树的度?带你了解它的特点
二叉树性质如下:
1 :在二叉树的第i层上至少有2^(i-1)个结点
2:深度为k的二叉树至多有2^(k-1)个结点
3:对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1
4:具有n个结点的完全二叉树的深度是【log2n】+1(向下取整)
5:如果对一棵有n个结点的完全二叉树的结点按层序编号,则对任一结点i(1in),有:
如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是i/2
如果2i>n,则结点i无左孩子;如果2in,则其左孩子是2i
如果2i+1>n,则结点i无右孩子;如果2i+1n,则其右孩子是2i+1
二叉树深度算法如下:
深度为m的满二叉树有2^m-1个结点;
具有n个结点的完全二叉树的深度为[log2n]+1.(log2n是以2为底n的对数)
扩展资料:
在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。
一棵深度为k,且有2^k-1个节点的二叉树,称为满二叉树。这种树的特点是每一层上的节点数都是最大节点数。而在一棵二叉树中,除最后一层外,若其余层都是满的,并且最后一层或者是满的,或者是在右边缺少连续若干节点,则此二叉树为完全二叉树。具有n个节点的完全二叉树的深度为log2(n+1)。深度为k的完全二叉树,至少有2k-1个节点,至多有2k-1个节点。
二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。然而,没有足够的信息来区分左结点和右结点。如果不考虑连通性,允许图中有多个连通分量,这样的结构叫做森林。
遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。
设L、D、R分别表示遍历左子树、访问根结点和遍历右子树, 则对一棵二叉树的遍历有三种情况:DLR(称为先根次序遍历),LDR(称为中根次序遍历),LRD (称为后根次序遍历)。
参考资料:百度百科-二叉树
二叉树的深度计算,首先要判断节点,以下是计算二叉树的详细步骤:
1、一颗树只有一个节点,它的深度是1;
2、二叉树的根节点只有左子树而没有右子树,那么可以判断,二叉树的深度应该是其左子树的深度加1;
3、二叉树的根节点只有右子树而没有左子树,那么可以判断,那么二叉树的深度应该是其右树的深度加1;
4、二叉树的根节点既有右子树又有左子树,那么可以判断,那么二叉树的深度应该是其左右子树的深度较大值加1。
一棵深度为k,且有2^k-1个节点的二叉树,称为满二叉树。这种树的特点是每一层上的节点数都是最大节点数。而在一棵二叉树中,除最后一层外,若其余层都是满的,并且最后一层或者是满的,或者是在右边缺少连续若干节点,则此二叉树为完全二叉树。
具有n个节点的完全二叉树的深度为floor(log2n)+1。深度为k的完全二叉树,至少有2k-1个叶子节点,至多有2k-1个节点。
扩展资料
二叉树深度的性质:
1、在非空二叉树中,第i层的结点总数不超过, i>=1;
2、深度为h的二叉树最多有个结点(h>=1),最少有h个结点;
3、对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;
4、具有n个结点的完全二叉树的深度为
5、有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:
若I为结点编号则 如果I>1,则其父结点的编号为I/2;
如果2*I<=N,则其左孩子(即左子树的根结点)的编号为2*I;若2*I>N,则无左孩子;
参考资料:百度百科—二叉树
一颗树只有一个节点,它的深度是1;
根节点只有左子树而没有右子树,那么二叉树的深度应该是其左子树的深度加1;
根节点只有右子树而没有左子树,那么二叉树的深度应该是其右树的深度加1;
根节点既有左子树又有右子树,那么二叉树的深度应该是其左右子树的深度较大值加1
深度为m的满二叉树有2^m-1个结点;
具有n个结点的完全二叉树的深度为[log2n]+1.(log2n是以2为底n的对数
)
希望对你有帮助!
先遍历二叉树的左子树的深度,然后再遍历二叉树右子树的深度。最后判断左子树和右子树的深度,如果左子树比右子树深则返回左子树深度+1,否则返回右子树深度+1。
算法如下:
/* 初始条件: 二叉树T存在。操作结果: 返回T的深度 */
int BiTreeDepth(BiTree T)
{
int i,j;
if(!T)
return 0;
if(T->lchild)
i=BiTreeDepth(T->lchild); //左子树深度
else
i=0;
if(T->rchild)
j=BiTreeDepth(T->rchild); //右子树深度
else
j=0;
return i>j?i+1:j+1;
}
什么叫二叉树的度?带你了解它的特点
二叉树的深度怎么算
如果根节点只有左子树,深度等于左子树的深度加1; 如果根节点只有右子树,深度等于右子树的深度加1; 如果根节点同时有左右子树,深度则是左右子树深度中较大的那个加1。特别值得注意的是,满二叉树和完全二叉树的深度计算有所不同。满二叉树有2^k-1个节点,深度k的满二叉树的深度直接为k。而完...
二叉树深度怎么计算?
1、一颗树只有一个节点,它的深度是1;2、二叉树的根节点只有左子树而没有右子树,那么可以判断,二叉树的深度应该是其左子树的深度加1;3、二叉树的根节点只有右子树而没有左子树,那么可以判断,那么二叉树的深度应该是其右树的深度加1;4、二叉树的根节点既有右子树又有左子树,那么可以判断,...
二叉树的深度是什么?
1、一颗树只有一个节点,它的深度是1;2、二叉树的根节点只有左子树而没有右子树,那么可以判断,二叉树的深度应该是其左子树的深度加1;3、二叉树的根节点只有右子树而没有左子树,那么可以判断,那么二叉树的深度应该是其右树的深度加1;4、二叉树的根节点既有右子树又有左子树,那么可以判断,...
二叉树的深度是如何计算?
具有n个结点的完全二叉树的深度为logn+1。如果对一棵有n个结点的完全二叉树的结点按层序编号,则对任一结点i,有:如果i=1,则结点i是二叉树的根节点,无双亲;如果i>1,则其双亲是结点⌊i\/2⌋。如果2i>n,则结点i无左孩子;否则其左孩子是结点2i。如果2i+1>n,则结点i无右...
二叉树的性质有些啊?怎么求它的深度?
1. 在任意二叉树的第i层上,至少有2^(i-1)个节点。2. 深度为k的二叉树至多有2^(k-1)个节点。3. 对于任何一棵二叉树T,如果其终端节点数(n0)和度为2的节点数(n2),则有n0 = n2 + 1。4. 具有n个节点的完全二叉树的深度是[log2(n)] + 1(向下取整)。5. 如果对一棵有n个...
二叉树的深度和高度有什么区别??
高度和深度是相反的表示,深度是从上到下数的,而高度是从下往上数。三、计算方式不同 1、二叉树深度算法如下:深度为m的满二叉树有2^m-1个结点;具有n个结点的完全二叉树的深度为[log2n]+1.(log2n是以2为底n的对数)。2、分析二叉树的深度(高度)和它的左、右子树深度之间的关系。从...
二叉树的深度是多少?
二叉树的深度计算,首先要判断节点,以下是计算二叉树的详细步骤:1、一颗树只有一个节点,它的深度是1;2、二叉树的根节点只有左子树而没有右子树,那么可以判断,二叉树的深度应该是其左子树的深度加1;3、二叉树的根节点只有右子树而没有左子树,那么可以判断,那么二叉树的深度应该是其右树的深度...
请问完全二叉树中的度、深度、叶子数量怎么算?
2-度:在二叉树中,每个节点拥有的子节点数量称为节点的度。在这棵树中,除了根节点E,其它节点的度都是2。所以这棵树的度是3。深度:树中从根节点到最远叶子节点的最长路径上的节点数称为深度。在这棵树中,从根节点E到最远的叶子节点B的路径长度为3,所以这棵树的深度是3。根:这棵树的...
树的深度怎么算
在二叉树中,树的深度等于左子树和右子树中深度的最大值加1。这是因为二叉树的定义是每个节点最多有两个子节点,所以树的深度就是左子树和右子树中较大的那个的深度加上根节点自身的一个节点。因此,要计算一棵树的深度,我们可以使用递归的方式,先分别计算左子树和右子树的深度,然后取两者中的最...
二叉树深度的问题
既然二叉树是递归定义的,那么二叉树的深度也可以递归定义 二叉树的深度=max{左子树的深度,右子树的深度}+1 其中左右子树的深度又可以按照上面公式。一般定义 二叉树的深度=max{叶子节点到根节点路径的总节点数}
用径奥氮: 具有 n 个结点的完全二叉树的深度为 log2n +1 .以2为底的N的对数加1
松原市17298786758: 二叉树的深度怎么算 - ?
用径奥氮: 二叉树的深度就是二叉树的层次
松原市17298786758: 一颗含有N个结点的完全二叉树,他的深度是?怎么算? - ?
用径奥氮:[答案] 公式:K =「log2n」+1 深度公式其实就是以2为底N的对数下取整(下取整是指比如9.2点,上取整就是10,下取整就是9了),然后再+1就是深度了,注意上面那个不是2n,而是以2为底N的对数.
松原市17298786758: 二叉树的性质有些啊?怎么求它的深度? - ?
用径奥氮: 二叉树性质如下: 1 :在二叉树的第i层上至少有2^(i-1)个结点 2:深度为k的二叉树至多有2^(k-1)个结点 3:对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1 4:具有n个结点的完全二叉树的深度是【log2n】+1(...
松原市17298786758: 有关于二叉树深度的计算 - ?
用径奥氮: 二叉树中度为2的节点比叶子节点数多一个,因为叶子节点数一个,所以度为2的节点有0个.因此度为1的节点有7-1=6个.即该二叉树都只有一个分支.所以深度为7 .紧急任务中,求采纳啊,亲.
松原市17298786758: 请写出计算二叉树的深度的算法 - ?
用径奥氮: 写一算法,计算二叉树的深度. 提示:主要算法采用递归算法;要求写出与之配套的主调函数. //主调函数void Btree ::num() { int m=0; m=depth( root ); cout
松原市17298786758: 有999个结点的完全二叉树深度为?写下简要的计算过程 - ?
用径奥氮:[答案] 1层的完全二叉树,有2^0=1个结点(=2^1-1) 2层的完全二叉树,有2^0+2^1=3个结点=(2^2-1) 3层,有2^0+2^1+2^2=7个结点=(2^3-1) 显然,按照上述规律,大于等于999,并且最接近的数是1024(=2^10-1) 答案:深度为10层.
松原市17298786758: 写一个求二叉树的深度的算法 - ?
用径奥氮: #include <stdio.h> #include <stdlib.h>typedef struct node {char data;struct node *left,*right; }Node,*PNode; PNode createBtree(PNode root)//创建二叉树,控制台下输入,基于先序遍历输入 {char data;scanf("%c",&data);if (data==' '){root...
松原市17298786758: 二叉树深度算法 - ?
用径奥氮: 肯定要判断啊,因为二叉树的深度除了根的一层外,肯定是左右子树的的深度的最大值加1
松原市17298786758: 求解具有n个结点的完全二叉树的深度,写出计算过程 - ?
用径奥氮:[答案] 具有n个结点的完全二叉树的深度为「log2n」+1 !二叉树的计算方法:若一棵二叉树为空,则其深度为0,否则其深度等于左子树和右子树的最大深度加1,即有如下递归模型:depth(b)=0 /*如果b=NULL*/ depth(b)=max(depth(b->le...