zoukankan      html  css  js  c++  java
  • 递归法创建二叉树

    1.内容简介

    • 先序法创建新二叉树
    • 先序、中序、后序遍历二叉树

    2.结构体展示

    typedef struct tree{
        char data;    /*字符类型data存放该结点的内容*/ 
        struct tree *lchild,*rchild;    /*lchild和rchild为该结点的左右子树*/ 
    }Tree;

    3.代码思路

    • 先序:根结点->左结点->右结点
    • 中序:左结点->根结点->右结点
    • 后序:左结点->右结点->根结点

    4.代码展示

    • 先序法创建新二叉树
    void CreatBTree(Tree *&T){    //先序创建二叉树 
        T=new Tree;    
        T->lchild=NULL;
        T->rchild=NULL;
        char data;
        cin>>data;
        if(data=='#'){    /*结束标识符为'#'*/ 
            T=NULL;    
            return;
        }else{
            T->data=data;
        }
        CreatBTree(T->lchild);
        CreatBTree(T->rchild);
    }
    • 先序遍历二叉树
    void PreOrder(Tree *T){    //前序遍历二叉树 
        if(T!=NULL){
            cout<<T->data<<" ";
            PreOrder(T->lchild);
            PreOrder(T->rchild);
        }
    }
    • 中序遍历二叉树
    void InOrder(Tree *T){    //中序遍历二叉树 
        if(T!=NULL){
            InOrder(T->lchild);
            cout<<T->data<<" ";        
            InOrder(T->rchild);
        }
    }
    • 后序遍历二叉树
    void PostOrder(Tree *T){    //后序遍历二叉树 
        if(T!=NULL){
            PostOrder(T->lchild);    
            PostOrder(T->rchild);
            cout<<T->data<<" ";    
        }
    }
    • 主函数
    int main(){
        Tree *T;
        cout<<"输入先序创建二叉树的序列:"<<endl;
        CreatBTree(T);
        cout<<"先序遍历的结果:"<<endl;
        PreOrder(T);
        cout<<endl;
        cout<<"中序遍历的结果:"<<endl;
        InOrder(T);
        cout<<endl;
        cout<<"后序遍历的结果:"<<endl;
        PostOrder(T);
        cout<<endl;
        
        return 0; 
    }

    4.运行结果

    • 示范二叉树

    • 运行截图

     

  • 相关阅读:
    2月24日-寒假进度24
    2月23日-寒假学习进度23
    2月22日-寒假学习进度22
    2月21日-寒假学习进度21
    第一周冲刺意见汇总
    团队绩效评估
    团队工作第七天
    团队工作第六天
    团队工作第五天
    团队工作第四天
  • 原文地址:https://www.cnblogs.com/damao33/p/10780892.html
Copyright © 2011-2022 走看看