| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4212 人关注过本帖
标题:求二叉树遍历的应用
只看楼主 加入收藏
tanlypan
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-6-23
收藏
 问题点数:0 回复次数:7 
求二叉树遍历的应用
求 举例讨论二叉树前序遍历和中序遍历的应用 哪位哥哥姐姐能帮小弟下的,在线等啊~~
搜索更多相关主题的帖子: 遍历 二叉树 应用 和中 小弟 
2005-06-23 16:58
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
其实主要是应用在递归跟非递归转换那方面.

c++/C + 汇编 = 天下无敌
2005-06-24 13:32
srgzyq
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-5-9
收藏
得分:0 
/*第六题-先序、中序、后序遍历的递归算法*/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define OK 1
#define ERROR 0
#define NULL 0
#define OVERFLOW -2

typedef int Status;
typedef char TElemType;

/*二叉树的二叉链表存储表示*/
typedef struct BiTNode{
    TElemType data;
    struct BiTNode *lchild, *rchild;    //左右孩子指针
}BiTNode, *BiTree;

/*建立二叉链表*/
Status CreateBiTree(BiTree &T){
    //按先序次序输入二叉树中结点值,空格表示空树
    //构造二叉链表表示的二叉树
    char ch;
    scanf("%c",&ch);
    
    //ch=getchar();
    if(ch==' ')
        T=NULL;
        
    else
    {
        if(!(T=(BiTNode*)malloc(sizeof(BiTNode)))) exit(OVERFLOW);
        T->data=ch;
        CreateBiTree(T->lchild);
        CreateBiTree(T->rchild);
    }
    return OK;
}

/*打印二叉树的内容*/
Status PrintElement(char ch)
{
    printf("%c",ch);

    return OK;
}

/*先序遍历二叉树,递归算法*/
Status PreOrderTraverse(BiTree T,Status(*PrintElement)(TElemType e))
{
    if(T)
    {
        if(PrintElement(T->data))
            if(PreOrderTraverse(T->lchild,PrintElement))
                if(PreOrderTraverse(T->rchild,PrintElement))
                    return OK;
        return ERROR;
    }
    else return OK;
}
/*中序遍历二叉树,递归算法*/
Status InOrderTraverse(BiTree T,Status(*PrintElement)(TElemType e))
{
    if(T)
    {
        if(InOrderTraverse(T->lchild,PrintElement))
            if(PrintElement(T->data))
                if(InOrderTraverse(T->rchild,PrintElement))
                    return OK;
        return ERROR;
    }
    else return OK;
}

/*后序遍历二叉树,递归算法*/
Status PostOrderTraverse(BiTree T,Status(*PrintElement)(TElemType e))
{
    if(T)
    {
        if(PostOrderTraverse(T->lchild,PrintElement))
            if(PostOrderTraverse(T->rchild,PrintElement))
                if(PrintElement(T->data))
                    return OK;
        return ERROR;
    }
    else return OK;
}


int main()
{    BiTree T;
    printf("请输入二叉树:");
    printf("\n");
    CreateBiTree(T);
    
    printf("先序遍历:");
    printf("\n");
    PreOrderTraverse(T,PrintElement);
    
    printf("\n");
    printf("中序遍历:");
    printf("\n");
    InOrderTraverse(T,PrintElement);
    
    printf("\n");
    printf("后序遍历:");
    printf("\n");
    PostOrderTraverse(T,PrintElement);
    printf("\n");
    return 0;

}
2008-05-14 09:35
张信哲
Rank: 1
等 级:新手上路
帖 子:139
专家分:0
注 册:2008-4-3
收藏
得分:0 
有空帮我看看我空间里的那个遍历的问题吧。
用C++模板做的,有点问题,谢谢啊

相信自己,学无止尽。
2008-05-16 20:22
moonlight锦
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-5-14
收藏
得分:0 
HUFFMAN编码就是一个应用啊!
2008-05-17 22:49
jiangzw625
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2006-3-27
收藏
得分:0 
后缀表达式代码生成,计算等

马马乎乎
2008-06-10 18:38
狼族518
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-11-19
收藏
得分:0 
请教c++编写哈夫曼树及编码程序
谢谢大家回帖我是新手,请多指教啊呵呵
2008-11-19 16:02
狼族518
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-11-19
收藏
得分:0 
不好意思刚才是想发新帖结果发成回复了,
2008-11-19 16:08
快速回复:求二叉树遍历的应用
数据加载中...
 
   



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

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