递归创建二叉树


1. 树的存储

typedef struct BiTNode                             
{                             
    char data;
    struct BiTNode *lchild,*rchild;
}BTNode,*BTree;

2 .树的创建

void CreateTree(BTree &T)                          
{           
    char ch;
    cin>>ch;
    if(ch=='#')
    {
        T=NULL;
    }
    else
    {
        T=(BTree) new BTNode;
        if(!T)
        exit(-1);
        T->data=ch;
        CreateTree(T->lchild);
        CreateTree(T->rchild);
    }
}

3.前序遍历

void PreOrder(BTree &T)
{
    if(T)
    {
        cout<<T->data;
        PreOrder(T->lchild);
        PreOrder(T->rchild);
    }
}

4.中序遍历

void PreOrder(BTree &T)
{
    if(T)
    {
        PreOrder(T->lchild);

   cout<<T->data;
        PreOrder(T->rchild);
    }
}

5.后序遍历

void PostOrder(BTree &T)
{
    if(T!=NULL)
    {
            PostOrder(T->lchild);
            PostOrder(T->rchild);
            cout<<T->data;
    }
}

6. 完整代码

 #include <stdlib.h>
 #include<iostream>
using namespace std;
typedef struct BiTNode                              
{                             
    char data;
    struct BiTNode *lchild,*rchild;
}BTNode,*BTree;
void CreateTree(BTree &T)                       
{           
    char ch;
    cin>>ch;
    if(ch=='#')
    {
        T=NULL;
    }
    else
    {
        T=(BTree) new BTNode;
        if(!T)
        exit(-1);
        T->data=ch;
        CreateTree(T->lchild);
        CreateTree(T->rchild);
    }
}
void PreOrder(BTree &T)
{
    if(T)
    {
        cout<<T->data;
        PreOrder(T->lchild);
        PreOrder(T->rchild);
    }
}
void InOrder(BTree &T)
{
if(T!=NULL)
{
    InOrder(T->lchild);
    cout<<T->data;
    InOrder(T->rchild);
}

void PostOrder(BTree &T)
{
    if(T!=NULL)
    {
    PostOrder(T->lchild);
    PostOrder(T->rchild);
    cout<<T->data;
}
}
int main()
{
    BTree T;
    cout<<"请输入树的节点:" ;
    CreateTree(T);
    cout<<"先序遍历:";
    PreOrder(T) ;
    cout<<endl;
    cout<<"中序遍历:";
    InOrder(T) ;
    cout<<endl;
    cout<<"后序遍历:";
    PostOrder(T)  ;
    cout<<endl;
    return 0;
}

7.输入样例

abd##e##cf###

8.运行截图

 ![](https://img2018.cnblogs.com/blog/1452889/201904/1452889-20190430185946199-192769117.png)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM