社区
数据结构与算法
帖子详情
这样求二叉树的深度是否合理?
csdn5211
2006-12-21 09:17:30
用先序非递归遍历,设置一个变量,每次进栈时加一,出栈时减一,如果当前访问节点是叶子节点,就把这个变量记录下来。最后求所有记录下来的最大值。
...全文
401
2
打赏
收藏
这样求二叉树的深度是否合理?
用先序非递归遍历,设置一个变量,每次进栈时加一,出栈时减一,如果当前访问节点是叶子节点,就把这个变量记录下来。最后求所有记录下来的最大值。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cjq87
2006-12-21
打赏
举报
回复
//栈的函数写的不是很好
//退栈的时候隐含了depth--
#include <stdio.h>
#include <malloc.h>
#define M 10 /* 假设二叉树最多的层数 */
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
typedef struct Stack
{
char data;
BiTree * top;
BiTree * base;
}Stack;
void InitStack(Stack &S)
{
S.base=(BiTree *)malloc(sizeof(BiTree)*M);
S.top=S.base;
}
void push(Stack &S,BiTree p)
{
*S.top=p;
S.top++;
}
void pop(Stack &S,BiTree &p)
{
S.top--;
p=*S.top;
}
int StackEmpty(Stack S)
{
if(S.base==S.top)
return 1;
else
return 0;
}
void CreateBiTree(BiTree &T) /* 按先序序列建立一个二叉树 */
{
char c;
scanf("%c",&c);
if (c=='#')
T=NULL;
else
{
if (T)
{
T = (BiTNode *)malloc(sizeof(BiTNode));
T->data = c; /* 生成根结点 */
CreateBiTree(T->lchild); /* 构造左子树 */
CreateBiTree(T->rchild); /* 构造右子树 */
}
}
}
int DepthTree(BiTree &T)
{
BiTree p;
int depth, max;
Stack S;
InitStack(S);
p=T;
depth=max=0;
while(p||!StackEmpty(S))
{
if(p)
{
push(S,p);
p=p->lchild;
depth++;
if(max<depth)
max=depth;
}
else
{
pop(S,p);
p=p->rchild;
}
}
return max;
}
void main()
{
BiTree T;
printf("Please input(end with \"#\"):\n");
CreateBiTree(T);
printf("The depth of the tree is:");
printf("%d\n",DepthTree(T));
}
cjq87
2006-12-21
打赏
举报
回复
是合理的
我以前用这种方法编过这个程序
餐厅堂食预订与点餐平台源码 SSM+微信小程序(毕业设计/课程设计)
基于 SSM(Spring+SpringMVC+MyBatis-Plus)+微信小程序的餐厅堂食预订与点餐平台:顾客在小程序在线订座(桌台/时段/宴席预订单)、预点菜品,店员在管理后台确认预订、维护桌台档案与菜品,已支付预点单支持到店核销出单;管理端 Vue2+Element UI 构建产物内嵌 war 包同源部署。15 张表带演示数据,db.sql 一键建库,附图文部署说明与小程序运行说明。
小配电箱_机箱机柜.rar
小配电箱_机箱机柜.rar
671.zip
当 CAD 缺失对应字体时,图纸文字会显示异常,出现乱码、问号。将下载好的字体文件复制到 AutoCAD 的 Fonts 文件夹中,即可恢复正常显示。
通用机柜柜体详细模型_机箱机柜.rar
通用机柜柜体详细模型_机箱机柜.rar
windows-on-arm-pe简版
集成软件:(x64前带*) *diskgenius 4.7(别问为什么这么旧,问就是为了大小) dism++ 10.1.1002.1 7-zip(无法关联,所以本pe很垃圾) *imagine (它的关联是正常的,可能和它自己有关联命令有关) *pecmd bluebell老师的引导修复脚本(#102) explorer++(默认显示桌面) *bootice 1.3.4 *devmanview *ntpwedit wimlib-imagex(位于system32,需自行调用) shell为explorer++,使用pecmd进行初始化。 桌面上有一个bat用于安装系统,不用winntsetup是因为这pe不支持网络,arm64的adk文件也不知道怎么下。 本pe 512m内存即可启动,很适合想在手机qemu减少ram占用防杀。 上图!(github图床,图片不出来是正常现象) 主界面(实际上explorer++窗口刚开始在右下角)
数据结构与算法
33,025
社区成员
35,334
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章