黄泓彬

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

二叉树的创建

库文件和结构体定义

#include<iostream>
#include<stdlib.h>
using namespace std;

typedef struct Tree
{
    int data;
    struct Tree* lchild;
    struct Tree* rchild;
}Tree;

前序创建二叉树

Tree* createtree()
{
    Tree* p;
    int c;
    cin>>c;

    if(c==0)
    {
        p=NULL;
    }
    else
    {
    
        p=new Tree;
        p->data=c;
        p->lchild=createtree();
        p->rchild=createtree();
    }
    return p;
}

先序遍历

void preorder(Tree *p) 
{
    if(p!=NULL)
    {
        cout<<p->data<<" ";
        preorder(p->lchild);
        preorder(p->rchild);
    }
}

中序遍历

void inorder(Tree *p) 
{
    if(p!=NULL)
    {
        preorder(p->lchild);
        cout<<p->data<<" ";
        preorder(p->rchild);
    }
}

后续遍历

void postorder(Tree *p)
{
    if(p!=NULL)
    {
        preorder(p->lchild);
        preorder(p->rchild);
        cout<<p->data<<" ";
    }
} 

主函数

int main()
{
    Tree* tree=NULL;
    cout<<"创建一个二叉树(每两个数之间用空格间断,0代表空)"<<endl;
    tree=createtree();
    cout<<"二叉树创建完成"<<endl;
    cout<<"前序遍历二叉树"<<endl;
    preorder(tree);
    cout<<endl;
    cout<<"中序遍历二叉树"<<endl;
    inorder(tree);
    cout<<endl;
    cout<<"后序遍历二叉树"<<endl;
    postorder(tree);
    return 0;
}

posted on 2019-04-30 08:24  黄泓彬  阅读(208)  评论(0编辑  收藏  举报