社区
C语言
帖子详情
用递归写个求二叉树的深度的函数
sms88
2003-04-17 07:27:21
用递归写个求二叉树的深度的函数,而且写出其执行的每一步过程
...全文
284
11
打赏
收藏
用递归写个求二叉树的深度的函数
用递归写个求二叉树的深度的函数,而且写出其执行的每一步过程
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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;
}
}
JAVA近百种算法大全
最近找到的JAVA近百种算法大全 分享一下 java算法大全,有近100多种常见算法的源代码,是学习JAVA算法的难得资料,需要的童鞋来下载吧!
结构之法算法之道blog最新博文集锦第6期CHM文件
结构之法算法之道blog最新博文集锦第6期CHM文件,1月13日制作,请君享受。
递归
法求
二叉树
的
深度
想要计算一个
二叉树
的
深度
,我们先可以拆成求根结点的左右子树的
深度
;而根结点的左右子树的
深度
又可拆成求根左结点的左右子树
深度
和根右结点的左右子树的
深度
。这样一层一层给套下去,很容易想到
递归
。 明确每一步重复的任务: 计算节点左右子树的
深度
,并取其最大值。 确认
递归
的形参和返回值: 形参肯定为某节点的地址,不然算谁的子树高度呢! 返回值当然为当前子树的最大
深度
。这里注意,我们算出了节点的左右子树
深度
的最大值时,还需加1作为返回值,因为节点本身也是一层。 确认
递归
结束条件: 当节点为空时,
递归
结束。
递归
求
二叉树
的
深度
_
递归
解题三部曲
何谓
递归
?程序反复调用自身即是
递归
。我自己刚开始解决
递归
问题的时候,总是会去纠结这一层
函数
做了什么,它调用了自身后的下一层
函数
又做了什么......然后就会觉得实现一个
递归
解法十分复杂,根本就无从下手。相信很多初学者和我一样,这是一个思维误区,一定要走出来。既然
递归
是个反复调用自身的过程这就说明它每一级的功能都是一样的,因此我们只需要关注一级
递归
的解决过程即可。如上图所示我们需要关心的主要是以下三...
C语言
70,023
社区成员
243,253
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章