| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 973 人关注过本帖
标题:哪个大哥帮下我!```
只看楼主 加入收藏
daibenlong
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-5-15
收藏
 问题点数:0 回复次数:5 
哪个大哥帮下我!```
二叉树的遍历
对任意给定的二叉树(顶点数自定)建立它的二叉链表存贮结构,并利用栈的五种基本运算(置空栈、进栈、出栈、取栈顶元素、判栈空)实现二叉树的先序、中序、后序三种遍历,输出三种遍历的结果。


用TC编写   我不会编程啊         要交课程设计     一个星期后就要交       93803021@   本人邮箱  每次发的贴没一个人帮我解决  希望这次有个好心的帮我下忙
搜索更多相关主题的帖子: 二叉树 遍历 课程 链表 
2008-06-06 10:04
Loli
Rank: 1
来 自:飞燕算法群46520219
等 级:新手上路
帖 子:348
专家分:0
注 册:2008-5-27
收藏
得分:0 
作业真多



" border="0" />[color=white]
2008-06-06 10:13
wangyinshiwo
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2007-11-9
收藏
得分:0 
/* Note:Your choice is C IDE */
#include "stdio.h"
#include<stdlib.h>
typedef struct bitnode
{
    char ch;
    struct bitnode *lchild,*rchild;
}bitnode,*bittree;
typedef struct stacknode
{
    bitnode *data;
    struct stacknode *next;
}linkstack;
void initstack(linkstack *s)
{ s->next=NULL; }
void push(linkstack *s,bittree x)
{
    linkstack *p;
    p=(linkstack *)malloc(sizeof(linkstack));
    p->data=x;
    p->next=s->next;
    s->next=p;
}
bittree pop(linkstack *s)
{
    bittree x;
    linkstack *p;
    p=s->next;
    if(s->next==0)return 0;
    x=p->data;
    s->next=p->next;
    free(p);
    return x;
}
int emptystack(linkstack *s)
{
    if(s->next)return 1;
    else return 0;
}
bitnode *gettop(linkstack *s)
{
    bittree x;
    if(s->next)
    x=s->next->data;
    return x;
}
bittree cre_tree()
{
    bittree root;
    char ch;
    ch=getchar();
    if(ch=='#')root=NULL;
    else
    {
        root=(bittree)malloc(sizeof(bitnode));
        root->ch=ch;
        root->lchild=cre_tree();
        root->rchild=cre_tree();
    }
    return root;
}
void preorder(bittree root)
{
    linkstack s;
    bittree p;
    initstack(&s);
    push(&s,root);
    while(emptystack(&s))
    {
        p=pop(&s);
        while(p)
        {
            printf("%c",p->ch);
            if(p->rchild)push(&s,p->rchild);
            p=p->lchild;
        }
    }
}
void inorder(bittree root)
{
    bittree p;
    linkstack s;
    initstack(&s);
    p=root;
    while(p||emptystack(&s))   //注意还有右子树也要判断
    {
        while(p)
        {
            push(&s,p);
            p=p->lchild;
        }
        p=pop(&s);
        printf("%c",p->ch);
        p=p->rchild;
    }
}
void postorder(bittree root)
{
    bittree p,q;
    linkstack s;
    initstack(&s);
    p=root;q=NULL;
    while(p||emptystack(&s))
    {
        if(p!=q)       //但p等于root时停止入栈
        {
            while(p)
            {
                push(&s,p);
                if(p->lchild)p=p->lchild;        //若q的右指针为空或指向刚刚访问过的结点
                else p=p->rchild;
            }
        }
        if(!emptystack(&s))break;
        q=gettop(&s);
        if(q->rchild==p)
        {
            p=pop(&s);
            printf("%c",p->ch);
        }
        else p=q->rchild;
    }
}
void main()
{
    bittree root;
    root=cre_tree();
    preorder(root);printf("\n\n");
    inorder(root);printf("\n\n");
    postorder(root);printf("\n\n");
}

抽刀断水水更流,举杯消愁愁更愁。
2008-06-06 22:59
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
收藏
得分:0 
LZ很强;
LS也很强;

GIS
Geographic Information System
你在哪里?——》你的坐标?
2008-06-07 22:44
计算机的流氓
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-6-6
收藏
得分:0 
我倒。佩服,佩服。
2008-06-16 19:58
lingluoz
Rank: 2
来 自:苏州科技学院
等 级:新手上路
威 望:4
帖 子:749
专家分:0
注 册:2008-2-2
收藏
得分:0 
以前这个论坛里面有位仁兄发个贴子说。。有偿帮做作业。被我小鄙视了一下。。现在看看。我应该佩服他一下才对。。

Murphy's Law :
If there are two or more ways to do something, and one of those ways can result in a catastrophe, then someone will do it.
2008-06-16 20:03
快速回复:哪个大哥帮下我!```
数据加载中...
 
   



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

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