zoukankan      html  css  js  c++  java
  • 数据结构之二叉树(一)

     设计和编写程序,按照输入的遍历要求(即先序、中序和后序)完成对二叉树的遍历,并输出相应遍历条件下的树结点序列。

     1 //递归实现
     2 #include<iostream>
     3 #include<string>
     4 using namespace std;
     5 
     6 typedef struct BiTNode{
     7     char data;
     8     struct BiTNode *lchild,*rchild;
     9 }BiTNode,*BiTree;
    10 
    11 void InitBiTree(BiTree &T)//构造空二叉树
    12 {
    13     T=NULL;
    14 }
    15 void CreateBiTree(BiTree &T)//生成二叉树
    16 {
    17     char ch;
    18     cin>>ch;
    19     if(ch=='0')//0代表空
    20         T=NULL;
    21     else
    22     {
    23         T=(BiTree)malloc(sizeof(BiTNode));//生成根结点
    24         if(!T)
    25         {
    26             cout<<"生成结点错误!"<<endl;
    27             return;
    28         }
    29         T->data=ch;
    30         CreateBiTree(T->lchild);
    31         CreateBiTree(T->rchild);
    32     }
    33 }
    34 
    35 void PreOrder(BiTree T)//先序递归遍历
    36 {
    37     if(T!=NULL)
    38     {
    39         cout<<T->data<<" ";
    40         PreOrder(T->lchild);
    41         PreOrder(T->rchild);
    42     }
    43 }
    44 
    45 void InOrder(BiTree T)//中序递归遍历
    46 {
    47     if(T!=NULL)
    48     {
    49         InOrder(T->lchild);
    50         cout<<T->data<<" ";
    51         InOrder(T->rchild);
    52     }
    53 }
    54 
    55 void PostOrder(BiTree T)//后序递归遍历
    56 {
    57     if(T!=NULL)
    58     {
    59         PostOrder(T->lchild);
    60         PostOrder(T->rchild);
    61         cout<<T->data<<" ";
    62     }
    63 }
    64 int main()
    65 {
    66     BiTree T;
    67     InitBiTree(T);
    68     cout<<"请输入二叉树结点"<<endl;
    69     CreateBiTree(T);
    70     string str="";
    71     cout<<"请输入遍历要求(先序,中序,后序)";
    72     cin>>str;
    73     if(str=="先序")
    74     {
    75         cout<<endl<<"先序递归遍历树"<<endl;
    76         PreOrder(T);
    77     }
    78     else if(str=="中序")
    79     {
    80         cout<<endl<<"中序递归遍历树"<<endl;
    81         InOrder(T);
    82     }
    83     else if(str=="后序")
    84     {
    85         cout<<endl<<"后序递归遍历树"<<endl;
    86         PostOrder(T);
    87     }
    88     cout<<endl;
    89     system("pause");
    90     return 0;
    91 }

    作者:耑新新,发布于  博客园

    转载请注明出处,欢迎邮件交流:zhuanxinxin@aliyun.com

  • 相关阅读:
    十分钟开发一个调用Activity的PhoneGap插件
    Mac下MAMP初试体验
    探索Android中的Parcel机制(上)
    两个栈实现队列+两个队列实现栈----java
    php实现工厂模式
    Hibernate Criterion
    Android用户界面概览
    秒杀多线程第四篇 一个经典的多线程同步问题
    Java串口通信具体解释
    逗比之——程序猿装逼手冊1(0基础版)
  • 原文地址:https://www.cnblogs.com/Arthurian/p/6131171.html
Copyright © 2011-2022 走看看