社区
C语言
帖子详情
用递归写个求二叉树的深度的函数
sms88
2003-04-17 07:27:21
用递归写个求二叉树的深度的函数,而且写出其执行的每一步过程
...全文
309
11
打赏
收藏
用递归写个求二叉树的深度的函数
用递归写个求二叉树的深度的函数,而且写出其执行的每一步过程
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
suguanqun
2003-04-21
打赏
举报
回复
up
Spectrum
2003-04-21
打赏
举报
回复
up
lfengchao
2003-04-21
打赏
举报
回复
#include "stdio.h"
#include "alloc.h"
typedef char Elemtype;
typedef struct Bitnode
{Elemtype data;
struct Bitnode *lchild,*rchild;
}Bitnode,*Bittree;
Bittree creatbittree()
{ Bittree bt;
char ch;
scanf("%c",&ch);
if (ch==' ') bt=NULL;
else{
bt=(Bittree)malloc(sizeof(Bitnode));
bt->data=ch;
bt->lchild=creatbittree();
bt->rchild=creatbittree();
}
return bt;
}
int Bhigh(Bittree bt)
{
int H,HL,HR;
if(bt==NULL) H=0;
else
{
HL=Bhigh(bt->lchild);
HR=Bhigh(bt->rchild);
H=max(HL,HR)+1;
}
return H;
}
int max(int x,int y)
{
if(x>y)
return x;
else
return y;
}
main()
{
Bittree Tree;
int H;
Tree=creatbittree();
H=Bhigh(Tree);
printf("\nThe high of the tree is:%d\n",H);
}
MelodyCanFLY
2003-04-21
打赏
举报
回复
关注
sms88
2003-04-21
打赏
举报
回复
不是我偷懒呀,而是拿一个二叉数代入那个递归函数,我就不知道怎么计算到结果
huangstar1108
2003-04-21
打赏
举报
回复
很多书上都有,不要偷懒呀!
bjack
2003-04-18
打赏
举报
回复
template<class T>
int BinaryTree<T>::Height(BinaryTreeNode<T>*t) const
{
if(!t) return 0;
int hl = Height(t->LeftChild);
int hr = Height(t->RightChild);
if (hl > hr) return ++hl;
else return ++hr;
}
shishiXP
2003-04-17
打赏
举报
回复
struct BTNode
{
BTNode *lchild;
BTNode *rchild;
BTNode()
{
lchild=0;
rchild=0;
}
};
int getdepth( BTNode* BT )
{
int ldepth = 0;
int rdepth = 0;
if( BT == NULL )return 0;
ldepth=getdepth( BT->lchild );
rdepth=getdepth( BT->rchild );
return 1 + ( ldepth > rdepth ? ldepth : rdepth );
}
加分!!!!!!!!!!!!!!!!!
alexGIS
2003-04-17
打赏
举报
回复
不太明白你的要求。
什么叫写出其执行的每一步?
像计算机一样去读读源代码不就明白了程序到底怎么走的吗?
sms88
2003-04-17
打赏
举报
回复
可以用一个随便的二叉树写出其执行的每一步吗?
alexGIS
2003-04-17
打赏
举报
回复
int GetDepth( BTNode* BT )
{
int depth = 0;
int temp1 = 0;
int temp2 = 0;
if( BT == NULL )
{
return 0;
}
else
{
temp1 = GetDepth( BT->lChild );
temp2 = GetDepth( BT->rChild );
depth = temp1 > temp2 ? temp1 : temp2;
depth++;
return depth;
}
}
二叉树
求
深度
的
递归
的详细分析
二叉树
求
深度
的
递归
的详细分析
二叉树
求
深度
递归
算法源码》数据结构:typedef struct BINODE{ TELEMETYPE data; struct BINODE *lchild,*rchild;}BiNode,*BiTtree;》
递归
函数
int GetTreeDeep(BiTtree T) //计算
二叉树
的
深度
{ if(T==NULL) return 0; else{ int a = GetTr
递归
法求
二叉树
的
深度
想要计算一个
二叉树
的
深度
,我们先可以拆成求根结点的左右子树的
深度
;而根结点的左右子树的
深度
又可拆成求根左结点的左右子树
深度
和根右结点的左右子树的
深度
。这样一层一层给套下去,很容易想到
递归
。 明确每一步重复的任务: 计算节点左右子树的
深度
,并取其最大值。 确认
递归
的形参和返回值: 形参肯定为某节点的地址,不然算谁的子树高度呢! 返回值当然为当前子树的最大
深度
。这里注意,我们算出了节点的左右子树
深度
的最大值时,还需加1作为返回值,因为节点本身也是一层。 确认
递归
结束条件: 当节点为空时,
递归
结束。
【代码+注释】求
二叉树
的
深度
【超详细】
递归
+非
递归
实现
编写算法求出
二叉树
的
深度
(层数)
二叉树
的
深度
是指从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的
深度
。本文将用两种方式求出
二叉树
的
深度
第一种:无可置疑是
递归
核心代码块: /*求
二叉树
的
深度
,
递归
方式*/ int getDepth(BiTreeNode *root) { int left, right; if (root == NULL) //
递归
出口 return 0; else {
C++求
二叉树
深度
开发工具与关键技术: Visual Studio / C++ 作者:何文涛 撰写时间:2019-8-05
二叉树
的创建以及简单的运用我上次以及发布过了,现在做的是求
二叉树
的数
深度
。 下面就举了了例子来演示求
二叉树
的算法: //
二叉树
节点 typedef struct BINARYNODE { char ch; struct BINARYNODE* lchild; struct BINARYNOD...
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章