问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

后序遍历的递归算法和非递归算法

发布网友 发布时间:2022-06-19 20:16

我来回答

1个回答

热心网友 时间:2024-11-29 09:29

随便手写一下

struct node_s { data_t data; size_t nchildren; struct node_s *children[MAX]; };

// recursive traverse
// given callback function _access_ with arbitary data _ctx_
void traverse_r( struct node_s *root, void (*access)( struct node_s *node, void *ctx ), void *ctx ) {
int i;
if ( !root ) return;
for ( i=0; i<root->nchildren; i++ )
traverse_r( root->children[i], access, ctx );
access( root, ctx );
}

// needed stack operations
#define stackdef(s,sz) struct elem_s s#_base[sz]; size_t s#_top = 0
#define empty(s) (s##_top==0)
#define push(s,p,i) do{\
struct elem_s *s##_cur = &s##_base[s##_top++];\
s##_cur->node = (p), s##_cur->inext = (i);\
}while(0)
#define pop(s,pp,pi) do{\
struct elem_s *s##_cur = &s##_base[--s##_top];\
*(pp) = s##_cur->node, *(pi) = s##_cur->inext;\
}while(0)
// and data type.
struct elem_s { struct node_s *node; size_t inext; };

// non-recursive traverse
// given callback function _access_ with arbitary data _ctx_
void traverse_s( struct node_s *root, void (*access)( struct node_s *node, void *ctx ), void *ctx ) {
stackdef( s, MAXDEPTH );
struct node_s *cursor; size_t index;
push( s, root, 0 );

while ( ! empty( s ) ) {
pop( s, &cursor, &index );
if ( !cursor ) continue;
if ( cursor->nchildren <= index )
access( cursor, ctx );
else {
push( s, cursor, index + 1 );
push( s, cursor->children[0], 0 );
}
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求大学生谈恋爱的各种弊端 大学生恋爱的利大于弊吗? 大学生谈恋爱的弊处 dnf现在站街16000的物攻 增加100物攻能张多少 家里养的蚕宝宝是要蜕皮了吗 富贵包硬和软的区别 【已完成】为什么腋窝突然有异味? 女生为什么有狐臭症状? 为什么会狐臭 万视宝这个牌子是做什么的?有人了解嘛? 辽宁省考两年基层工作经验多少分上岸 如何删除最近打开的文档记录列表? 我在用WORD文档进行表格记录的编辑时遇到了麻烦事,清高手赐教 谁知道适用于毕业时候放的背景音乐都有什么?最好是纯音乐!谢谢!_百度知... 沉香舒活草本精油能治麻木不? 谁有 山东招标采购网 付费会员账号 帮忙插条信息 谢谢 喜兔在家沉香舒活草本精油儿童可以用吗? 招标人哪些行为属于以不合理条件限制,排斥潜在投标人或者投标人_百度知 ... 萧县为什么这么多项目不挂网招标? 招标书放在哪发布 海口市公共资源交易中心官网 中国招标采购网招标公告 www.zbytb.com/zbgg/ 的发布都要带什么手续,国... 晚期肺癌病人可以吃海鲜吗 糖尿病人能吃海鲜之类食物吗 生物学包含了哪些内容? 我第一次坐飞机!想拍天空的云,万一做不到窗户旁边!能不能调座位啊!还有... 坐飞机在天空中是什么感觉? 别克君越启动后转向灯、倒车影像、安全带提示音、音响均无声,怎么回... 利亚德的MicroLED产品好用吗? 一块板子上有多少棵microLED芯片 后序遍历提现在哪里,是怎样实现递归的?希望能详细说明&#xF60A; ...编写一个后序遍历和一个先序遍历二叉树的递归算法 后序遍历二叉树的递归算法 杜兰特是哪个球队 萝卜醋鱼的家常做法 请问萝卜醋鱼是怎么做的? 怎么做好吃,萝卜醋溜鱼头的家常做法 股票定增方案被证监会审核通过是否有一波行情 当兵10年退伍后可以申请绿卡吗? 《如梦之梦》2022继续巡演,你对该巡演都有哪些期待? 农历的六月六是啥节日哈 什么是转子?其作用是什么? 怎样在eclipse SDK运行有输入的java 程序 菜鸟怎么入门学习UI 安徽三大车展时间 伊期坦布尔,是哪个国家? 西安#十二月的天气怎么样,带什么样的衣服 西安最近天气如何?12月3日下午抵达西安。10号离开。 Cad中怎么新建表格样式? 请问大佬有《合金装备崛起:复仇》简体中文免安装版游戏免费百度云...