| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1780 人关注过本帖
标题:创建二叉树和实现二叉树的三种遍历
只看楼主 加入收藏
toy那拉氏
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-4-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
创建二叉树和实现二叉树的三种遍历

a.根据提示输入字符型数据创建二叉树,输入值为所有字符型数据
b.       输出为遍历后的每个结点的值的顺序
c.       创建二叉树并能实现二叉树的先序、中序、后序遍历
d.       如果输入数据为:a b c
搜索更多相关主题的帖子: 二叉树 
2016-05-05 08:34
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:20 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct TreeNode{
    char data;
    struct TreeNode *lchild;
    struct TreeNode *rchild;
};

struct TreeNode* add_to_tree(struct TreeNode *b,char data)
{
    int FLAG=0;
    struct TreeNode *p,*t;
    p=(struct TreeNode *)malloc(sizeof(struct TreeNode));
    p->data=data;
    p->lchild=NULL;
    p->rchild=NULL;
    if(b==NULL)
        b=p;
    else{t=b;
        while(!FLAG)
            if(t->data>data){if(t->lchild==NULL){t->lchild=p;FLAG=1;}else t=t->lchild;}
            else{if(t->rchild==NULL){t->rchild=p;FLAG=1;}else t=t->rchild;}
    }
    return b;
}
struct TreeNode* createTree(struct TreeNode *b)
{
    int i,n,data;
    printf("输入结点个数:\t");
    scanf("%d",&n);
    fflush(stdin);
    b=NULL;
    for(i=0;i<n;i++)
    {
        printf("添加第%d结点,输入结点数据域:\t",i+1);
        scanf("%c",&data);
        fflush(stdin);
        b=add_to_tree(b,data);
    } 
    return b;
}       
  
void preOrder(struct TreeNode *b)
{if(b){
    printf("%c\t",b->data);
    preOrder(b->lchild);
    preOrder(b->rchild);}
}

 

void inOrder(struct TreeNode *b)
{if(b){
    inOrder(b->lchild);
    printf("%c\t",b->data);
    inOrder(b->rchild);}
}
void postOrder(struct TreeNode *b)
{if(b){
    postOrder(b->lchild);
    postOrder(b->rchild);
    printf("%c\t",b->data);}
} 

 
main()
{
    int t;
    struct TreeNode *root;
    root=(struct TreeNode *)malloc(sizeof(struct TreeNode)); 
    do{printf("\n----------------------------------------------");
       printf("\n|    1.建立顺序二叉树                        |");
       printf("\n|    2.先序、中序、后序遍历二叉树            |");
       printf("\n|    3.程序运行结束                         |");
       printf("\n----------------------------------------------");
       printf("\n     请输入您的选择(1,2,3)\n");
       scanf("%d",&t);
    switch(t)
    {  
       case 1:root=createTree(root);break;
       case 2:printf("\n先序遍历:\n");
              preOrder(root);
              printf("\n中序遍历:\n");
              inOrder(root);
              printf("\n后序遍历:\n");
              postOrder(root);
              printf("\n\n          按Enter继续");
              getch();
              break;
    }
    printf("\n---------------------------------------------");
    }while(t>=1&&t<=3);
    printf("\n           运行结束。。。\a\a\a\a\a");
    printf("按Enter键返回");
    getch();
    return 0;
}

剑栈风樯各苦辛,别时冰雪到时春
2016-05-05 10:00
快速回复:创建二叉树和实现二叉树的三种遍历
数据加载中...
 
   



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

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