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<<"";  
    }  
    
  • 相关阅读:
    javascript笔记:深入理解javascript的function
    java笔记:SpringSecurity应用(二)
    javascript笔记:临摹jQuery(二)
    javascript笔记:临摹jQuery(一)
    java笔记:SpringSecurity应用(一)
    javascript笔记:javascript的前世,至于今生嘛地球人都知道了哈
    使用AJAX和J2EE创建功能强大的瘦客户端
    阻止事件冒泡
    Pro JavaScript Techniques第一章: 现代javscript编程
    JS数组方法汇总 array数组元素的添加和删除
  • 原文地址:https://www.cnblogs.com/calamus/p/5875669.html
Copyright © 2011-2022 走看看