社区
C语言
帖子详情
用递归写个求二叉树的深度的函数
sms88
2003-04-17 07:27:21
用递归写个求二叉树的深度的函数,而且写出其执行的每一步过程
...全文
278
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;
}
}
二叉树
递归
遍历,非
递归
遍历,按层次遍历
自己写的相当全的
二叉树
函数
操作集合,包括
二叉树
的
递归
遍历和非
递归
遍历,以及计算
二叉树
的
深度
和叶子节点等
二叉树
的创建及其遍历
按先序遍历的扩展序列建立
二叉树
的二叉链表存储结构,实现
二叉树
先序、中序、后序遍历的
递归
算法,实现
二叉树
中序遍历的非
递归
算法,实现
二叉树
层次遍历的非
递归
算法(要求使用顺序队列,调用顺序队列基本操作实现),求
二叉树
的
深度
(后序遍历)。
JS
深度
揭秘第二章-
函数
深入
1、自执行
函数
原理 2、模块化开发 3、惰性
函数
4、箭头
函数
5、
函数
参数默认值及传递方式 6、reset参数 7、块级作用域 8、堆栈概念 9、垃圾回收机制 10、执行上下文 11、变量对象 12、作用域原理 13、this原理 14、...
递归
法求
二叉树
的
深度
想要计算一个
二叉树
的
深度
,我们先可以拆成求根结点的左右子树的
深度
;而根结点的左右子树的
深度
又可拆成求根左结点的左右子树
深度
和根右结点的左右子树的
深度
。这样一层一层给套下去,很容易想到
递归
。 明确每一步重复的任务: 计算节点左右子树的
深度
,并取其最大值。 确认
递归
的形参和返回值: 形参肯定为某节点的地址,不然算谁的子树高度呢! 返回值当然为当前子树的最大
深度
。这里注意,我们算出了节点的左右子树
深度
的最大值时,还需加1作为返回值,因为节点本身也是一层。 确认
递归
结束条件: 当节点为空时,
递归
结束。
二叉树
求
深度
的
递归
的详细分析
》数据结构: typedef struct BINODE { TELEMETYPE data; struct BINODE *lchild,*rchild; }BiNode,*BiTtree; 》
递归
函数
int GetTreeDeep(BiTtree T) //计算
二叉树
的
深度
{ if(T==NULL) ...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章