| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 588 人关注过本帖
标题:如何把此程序由递归变成非递归
只看楼主 加入收藏
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
结帖率:100%
收藏
 问题点数:0 回复次数:3 
如何把此程序由递归变成非递归
void PreOrderTraverse(BiTree T){
    if(T!=NULL){
        P("%c_  ",T->data);;
        PreOrderTraverse(T->lchild);
        PreOrderTraverse(T->rchild);
        
    }
如何把此程序由递归变成非递归,望高手解惑
搜索更多相关主题的帖子: 递归 
2010-12-08 15:29
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
由非递归变成递归
2010-12-08 15:58
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
打错了
2010-12-08 15:59
kidangel666
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:139
注 册:2010-9-15
收藏
得分:0 
先序遍历啊
int Num =0;
void PushStack(struct TreeNode* Stack[],struct TreeNode* p)
{
    Stack[Num] =p;
    Num++;
}
struct TreeNode* PopStack(struct TreeNode* Stack[])
{
    struct TreeNode* Temp;
    Temp = Stack[Num-1];
    Num--;
    return Temp;
}


void PreOrderBTree2(struct TreeNode* Tree)
{
    struct TreeNode* Stack[Max];
    struct TreeNode* p;
    Num = 0;
    p = Tree;
    do
    {
        if( NULL !=p)
        {
            printf("%c ",p->Data);
            PushStack(Stack,p);
            p = p->Lsubtree;
        }
        else
        {
             p =PopStack(Stack);
            p = p->Rsubtree;
        }
    }while(0!=Num ||p !=NULL);
}
这个是我写的,主要是要建立一个栈储存根节点,一直到输完左孩子,然后出栈,再进栈右孩子(如果有的话)之后再出栈
2010-12-09 21:34
快速回复:如何把此程序由递归变成非递归
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017792 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved