首页 > 代码库 > C++ 创建和遍历二叉树

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=http://www.mamicode.com/ch;//由getchar()逐个读入来  "color: #339966;">//===============================================先序递归遍历二叉树  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<<"";  }  

 

C++ 创建和遍历二叉树