zoukankan      html  css  js  c++  java
  • C++ 创建和遍历二叉树

    一个简单的创建和遍历二叉树的C++程序,二叉树的其他操作程序待更新。

    #include <iostream>  
    using namespace std;  
    struct BiTNode{  
     char data;  
     struct BiTNode *lchild, *rchild;//左右孩子  
    };  
    BiTNode*T;  
    void CreateBiTree(BiTNode* &T);  
    void Inorder(BiTNode* &T);  
    void PreOrderTraverse(BiTNode* &T);  
    void Posorder(BiTNode* &T);  
    
    int main(){  
    cout<<"创建一颗树,其中A->Z字符代表树的数据,用“#”表示空树:"<<endl;  
      CreateBiTree(T);  
    cout<<"先序递归遍历:"<<endl;  
    PreOrderTraverse(T);  
    cout<<endl;  
    cout<<"中序递归遍历:"<<endl;  
      Inorder(T);  
    cout<<endl;  
    cout<<"后序递归遍历:"<<endl;  
            Posorder(T);  
    cout<<endl;  
      return 1;}  
    
    //=============================================先序递归创建二叉树树  
    void CreateBiTree(BiTNode* &T){  
     //按先序输入二叉树中结点的值(一个字符),空格字符代表空树,  
     //构造二叉树表表示二叉树T。  
     char ch;  
     if((ch=getchar())=='#')T=NULL;//其中getchar()为逐个读入标准库函数  
     else{  
      T=new BiTNode;//产生新的子树  
      T->data=ch;//由getchar()逐个读入来  
      CreateBiTree(T->lchild);//递归创建左子树  
      CreateBiTree(T->rchild);//递归创建右子树  
     }  
    }//CreateTree  
    
    //===============================================先序递归遍历二叉树  
    void PreOrderTraverse(BiTNode* &T){  
     //先序递归遍历二叉树  
     if(T){//当结点不为空的时候执行  
      cout<<T->data;  
      PreOrderTraverse(T->lchild);//  
      PreOrderTraverse(T->rchild);  
     }  
     else cout<<"";  
    }//PreOrderTraverse  
    
    //================================================中序遍历二叉树  
    void Inorder(BiTNode* &T){//中序递归遍历二叉树  
     if(T){//bt=null退层  
      Inorder(T->lchild);//中序遍历左子树  
      cout<<T->data;//访问参数  
      Inorder(T->rchild);//中序遍历右子树  
     }  
     else cout<<"";  
     }//Inorder  
    
    //=================================================后序递归遍历二叉树  
    void Posorder(BiTNode* &T){  
     if(T){  
      Posorder(T->lchild);//后序递归遍历左子树  
      Posorder(T->rchild);//后序递归遍历右子树  
      cout<<T->data;//访问根结点  
     }  
     else cout<<"";  
    }  
    
  • 相关阅读:
    xinetd编程
    我是这样学习Linux下C语言编程的编译命令gcc的使用
    Linux man命令的使用方法
    string.Format出现异常"输入的字符串格式有误"的解决方法
    .net 发送邮件
    cross join
    解决ASP.NET中的各种乱码问题
    网站推广优化教程100条(SEO,网站关键字优化,怎么优化网站,如何优化网站关键字)
    网页中嵌入Excel控件
    C#基础之 集合队列
  • 原文地址:https://www.cnblogs.com/calamus/p/5875669.html
Copyright © 2011-2022 走看看