设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
C\C++
›
怎样用C语言实现先序遍历二叉树的非递归算法?? ...
返回列表
查看:
3293
|
回复:
5
怎样用C语言实现先序遍历二叉树的非递归算法??
[复制链接]
shufeec
shufeec
当前离线
积分
19
IP卡
狗仔卡
发表于 2003-8-3 21:12:09
|
显示全部楼层
|
阅读模式
算法如下,谁能把我搞定C语言实现部分呀??
void PreOrder_Nonrecursive(Bitree T)//先序遍历二叉树的非递归算法
{
InitStack(S);
Push(S,T); //根指针进栈
while(!StackEmpty(S))
{
while(Gettop(S,p)&&p)
{
visit(p->data);
push(S,p->lchild);
} //向左走到尽头
pop(S,p);
if(!StackEmpty(S))
{
pop(S,p);
push(S,p->rchild); //向右一步
}
}//while
}//PreOrder_Nonrecursive
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
shufeec
shufeec
当前离线
积分
19
IP卡
狗仔卡
楼主
|
发表于 2003-8-3 21:38:25
|
显示全部楼层
谁帮帮我呀。。。
回复
支持
反对
使用道具
举报
显身卡
lordbyorn
lordbyorn
当前离线
积分
889
IP卡
狗仔卡
发表于 2003-8-3 21:41:03
|
显示全部楼层
You have done all, what do you want further?
回复
支持
反对
使用道具
举报
显身卡
shufeec
shufeec
当前离线
积分
19
IP卡
狗仔卡
楼主
|
发表于 2003-8-3 21:49:22
|
显示全部楼层
好了,自己搞定了。。。。
回复
支持
反对
使用道具
举报
显身卡
libinary
libinary
当前离线
积分
1502
IP卡
狗仔卡
发表于 2003-8-3 21:57:00
|
显示全部楼层
算法已经很清楚了,用堆栈实现,自己写一个堆栈就行了。
Bitree *stack[100];
int top = 0;
void
push(Bitree *p)
{
stack[top++] = p;
}
Bitree *
pop(void)
{
return stack[--top];
}
int
StackEmpty(void)
{
return top;
}
复制代码
这里的代码只是一个示意,很不完整,比如push、pop里没有范围检查,堆栈是固定大小的,等等。
堆栈写好了把你那个函数稍微改一下就行了。
回复
支持
反对
使用道具
举报
显身卡
harrypotter
harrypotter
当前离线
积分
2276
IP卡
狗仔卡
发表于 2003-8-4 00:11:48
|
显示全部楼层
用队列也可以,通过层次遍历,先让root入列,判断有无child,有让child如列,访问root,root出列,检察第一层的接点(child)有无child。依次类推。直到遍历最后一层。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表