请问c语言中什么是2叉树,什么是2叉树节点,深度是什么,深度为5的满2叉树中节点的个数?

作者&投稿:酆东 (若有异议请与网页底部的电邮联系)
C语言二叉树的深度指什么?怎么求?~

从根节点到叶子结点一次经过的结点形成树的一条路径,最长路径的长度为树的深度。根节点的深度为1。
解体思路:
1.如果根节点为空,则深度为0,返回0,递归的出口。
2.如果根节点不为空,那么深度至少为1,然后我们求他们左右子树的深度,
3.比较左右子树深度值,返回较大的那一个
4.通过递归调用
#include#includeusing namespace std;struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;};//创建二叉树结点BinaryTreeNode* CreateBinaryTreeNode(int value){ BinaryTreeNode* pNode=new BinaryTreeNode(); pNode->m_nValue=value; pNode->m_pLeft=NULL; pNode->m_pRight=NULL; return pNode;}//连接二叉树结点void ConnectTreeNodes(BinaryTreeNode* pParent,BinaryTreeNode* pLeft,BinaryTreeNode* pRight){ if(pParent!=NULL) { pParent->m_pLeft=pLeft; pParent->m_pRight=pRight; }}//求二叉树深度int TreeDepth(BinaryTreeNode* pRoot)//计算二叉树深度{ if(pRoot==NULL)//如果pRoot为NULL,则深度为0,这也是递归的返回条件 return 0; //如果pRoot不为NULL,那么深度至少为1,所以left和right=1 int left=1; int right=1; left+=TreeDepth(pRoot->m_pLeft);//求出左子树的深度 right+=TreeDepth(pRoot->m_pRight);//求出右子树深度 return left>right?left:right;//返回深度较大的那一个}void main(){// 1// / \// 2 3// /\ \// 4 5 6// /// 7 //创建树结点 BinaryTreeNode* pNode1 = CreateBinaryTreeNode(1); BinaryTreeNode* pNode2 = CreateBinaryTreeNode(2); BinaryTreeNode* pNode3 = CreateBinaryTreeNode(3); BinaryTreeNode* pNode4 = CreateBinaryTreeNode(4); BinaryTreeNode* pNode5 = CreateBinaryTreeNode(5); BinaryTreeNode* pNode6 = CreateBinaryTreeNode(6); BinaryTreeNode* pNode7 = CreateBinaryTreeNode(7); //连接树结点 ConnectTreeNodes(pNode1, pNode2, pNode3); ConnectTreeNodes(pNode2, pNode4, pNode5); ConnectTreeNodes(pNode3, NULL, pNode6); ConnectTreeNodes(pNode5, pNode7, NULL ); int depth=TreeDepth(pNode1); cout<<depth<<endl; system("pause");}出处:http://www.cnblogs.com/xwdreamer

叶子结点共有16个。
在一棵满二叉树中,节点的个数为2^n-1,叶子节点的个数为:2^(n-1)。
一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,除最后一层外,每一层上的所有节点都有两个子节点,即在满二叉树的第k层上有2^(k-1)个节点,且深度为m的满二叉树中有2^m-1个节点。
满二叉树满足如下性质。
1、一个层数为k 的满二叉树总结点数为:2^k-1。因此满二叉树的结点数一定是奇数个。
2、第i层上的结点数为:2^i-1
3、一个层数为k的满二叉树的叶子结点个数(也就是最后一层):2^k-1。

扩展资料满二叉树和完全二叉树的区别
1、定义不同
完全二叉树指除最后一层外,每一层上的节点数都达到最大值;在最后一层上只缺少右边的若干节点。
满二叉树指每一个层的结点数都达到最大值,即除最后一层外,每一层上的所有节点都有两个子节点。
2、关系不同
满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。
参考资料来源:百度百科-完全二叉树
参考资料来源:百度百科-满二叉树

二叉树是一种特殊的树形结构,二叉树中每个节点的度都不大于2,其可递归地定义如下:二叉树是N个结点的有限集合,它或者是空集,或者是由一个跟结点加上两棵分别称为左子树或右子树的互不相交的二叉树组成.
节点的概念跟树的节点概念一样
二叉树的根结点所在的层数为1,根结点的孩子结点所在的层数为2,以此下去。深度是指所有结点中最深的结点所在的层数。
2^5-1=31


C语言中 b++=2什么意思
b++==2在C语言中判断b是否等于2后b自加。在C语言中a++是首先拷贝自己的副本,然后对真值加一++a是对真值加一,然后使用真值。例如:int a=0, b, c;b = a++;c = ++a;printf("b=%d, c=%d", b, c);上述程序段运行结果为b=0,c=2,可以证明理论 而a++和++a本身在单独使用时,与a...

c语言中1\/2是什么意思
c语言中1\/2表示用整数1除以整数2,因为两者都是整数,其运算结果为0。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级...

c语言中%2d是什么意思?
C语言中的% 2d是printf()函数的输出格式中的%a.bf,表示将数字按宽度为2,采用右对齐方式输出,若数据位数不到2位,则左边补空格。如:1、“%8d ”要求输出宽度为8,而a值为15只有两位故补三个空格。2、“%6.3lf”指定输出宽度为6,精度为3,由于实际长度超过6故应该按实际位数输出,小数...

C语言中C*=2什么意思
就是变量C乘以2再次把乘积赋值给C,也就是可以写出C=C*2;

在C语言中b=a<<2;是什么意思?
因为前者是更底层一些的操作。因此程序中乘以2的操作尽量用左移一位来代替。定义一些常量可能会用到<<运算。你可以方便的用1<<16 -1 来表示65535(unsingned int 最大值16位系统)。很多算法和数据结构要求数据模块必须是2的幂,此时就可以用<<来定义MAX_N等常量。)引自网页链接 第三段 ...

C语言中( 表达式1,表达式2 )是什么意思
(a,b),(a-b,b),(b,-b)的值都会是什么啊?2 2 -2 ( 表达式1,表达式2 )等于做表达式1的事情,做表达式2的事情,然后把表达式2的结果返回。书上有说的,分别是","和"()"操作符。现在的人真懒,连翻书都不愿意。

2d在c语言中是什么意思
printf("%2d",x);就是以至少2位的宽度输出x的十进制值。如果x是个位数,则前面补一个空格;否则就直接输出x的值。如果是scanf("%2d",&x);那就是读入x的时候,最多只读入2位整数。含义如下:使输出的int型的数值以2位的固定位宽输出。如果不足2位,则在前面补空格;如果超过2位,则按实际...

c语言中的%2d是什么意思?
C语言中的% 2d是printf()函数的输出格式中的%a.bf。表示将数字按宽度为2,采用右对齐方式输出,若数据位数不到2位,则左边补空格。如:1、“%8d ”要求输出宽度为8,而a值为15只有两位故补三个空格。2、“%6.3lf”指定输出宽度为6,精度为3,由于实际长度超过6故应该按实际位数输出,小数...

C语言中,问号表示什么意思?
?用来判断条件的真假,:用来根据判断结果决定取值。如(a<b)?a:b"是一个"条件表达式",如果a

c语言i%2是什么意思?
a%b是a除以b的余数,i%2就是i除以2的余数,当除以2的时候一般用来判断前面那个数的奇偶性,i%2==0就说明i是偶数,==1就说明i是奇数 C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何...

积石山保安族东乡族撒拉族自治县13633528640: 计算机c语言中什么是“二叉树”? -
壤易惠菲: 在计算机科学中,二叉树是每个结点最多有两个子树的有序树.通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree).二叉树常被用作二叉查找树和二叉堆或是二叉排序树. 二叉树的每个结点至多只有二棵子树(不存在度大...

积石山保安族东乡族撒拉族自治县13633528640: 请问c语言中什么是2叉树,什么是2叉树节点,深度是什么,深度为5的满2叉树中节点的个数?
壤易惠菲: 二叉树是一种特殊的树形结构,二叉树中每个节点的度都不大于2,其可递归地定义如下:二叉树是N个结点的有限集合,它或者是空集,或者是由一个跟结点加上两棵分别称为左子树或右子树的互不相交的二叉树组成. 节点的概念跟树的节点概念一样 二叉树的根结点所在的层数为1,根结点的孩子结点所在的层数为2,以此下去.深度是指所有结点中最深的结点所在的层数. 2^5-1=31

积石山保安族东乡族撒拉族自治县13633528640: C语言中的二叉树 -
壤易惠菲: 很简单 比如:A B C D E F G 这是一个二叉树 前序遍历是 根左右 ADBGECF 后序遍历是 左右根 DGEBFCA

积石山保安族东乡族撒拉族自治县13633528640: 二叉树(C语言)怎么创建? -
壤易惠菲: C语言中二叉树的创建需要用到结构体来定义一个树的数据类型.树这个数据结构有一些数据域,和多个指针域.当然,对于二叉树而言,一般可以定义两个指针域,分别指向root节点的左右子节点.数据结构定义:struct tree{ int data; //这里数据域以此为例 tree*right,*left;}; 真正构建二叉树可以使用动态内存申请,这是一种比较常见的方法(如果不会动态内存申请,可以先看看),但是这样做在子树很多时会耗费较多时间.因此可以事先开辟好一段内存空间用于存储树.比如 tree T[2000];如果需要建立新的子树,那么只需将数组中某个左右子节点赋值即可.如有疑问,欢迎继续追问.

积石山保安族东乡族撒拉族自治县13633528640: C语言中关于二叉树图形解答??? -
壤易惠菲: (1)、就图三而言,根据图一的二叉树图,序号为1 的结点a的孩子有序号为2的结点b和序号为3的结点c,指针就是先指向2后指向3,二叉树是一般是先写左孩后写右孩的.接着看结点a的左孩序号为2的结点b,他的左孩和右孩分别为序号为4的d和序号为5的e,再看结点a的右孩c的孩子序号为6的结点f,,一直这样看下去,没有孩子的则忽略.(2)、图二的看法与图三的类似,parent这一列表明父母的序号

积石山保安族东乡族撒拉族自治县13633528640: C语言 二叉树深度,解释一下 -
壤易惠菲: 叶子节点就是度为0的结点,比度为2的结点多一个,即度2的没有,这样度为1的结点就是11个,故深度为12(1度就是结点连着1个子树,二叉树最多俩子树,即左右子树)

积石山保安族东乡族撒拉族自治县13633528640: 哪位大神解释一下C语言中二叉树的知识点,如:什么是度,叶子结点,等…要用笔写标注后拍的照片,谢谢 -
壤易惠菲: 二叉树是度最大值被固定为2的树(反过来不对,因为二叉树还有其他规定).叶子结点,顾名思义就是树的“叶子”,也就是没有子节点的节点,因为是叶子而不是树枝.如下图《数据结构》书上参考. 如图,如有疑问或不明白请追问哦(只能在提问范围内,且次数有限)!

积石山保安族东乡族撒拉族自治县13633528640: C语言 什么叫完全二叉树?
壤易惠菲: 若二叉树除最后一层外,其它各层的结点数都达到最大个数,最后一层所有的节点都连续集中在最左边,这就是完全二叉树

积石山保安族东乡族撒拉族自治县13633528640: c语言基础里,关于满2叉树的定义 -
壤易惠菲: 一棵n层完全二叉树有2^n个节点,最后一层有2^(n-1)个节点,所以叶子节点是全部的一半

积石山保安族东乡族撒拉族自治县13633528640: 二叉树 链表 在C语言中是什么意思? fseek函数是什么意思? -
壤易惠菲: 二叉树和链表只是一种数据结构:二叉树比如:?? ?? ?? ?? 0?? ?? ??/ ?? ?? ??\?? 1 ?? ?? ?? ?? 2 ?? ?? ?? ?? 一个节点两个分支这种方式存储数据.用指针访问!链表就形如一条链的数据.指针进行访问链接!fseek函数是移动文件指针.当刚打开文件的时候文件指针在文件第一个字节.通过这个函数可以移动文件指针到指定的位置.就相当于一个游标!

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