前端菜鸟

C++ 创建和遍历二叉树

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

#include   
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字符代表树的数据,用“#”表示空树:"<
//=============================================先序递归创建二叉树树  
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<data;  
  PreOrderTraverse(T->lchild);//  
  PreOrderTraverse(T->rchild);  
 }  
 else cout<<"";  
}//PreOrderTraverse  

//================================================中序遍历二叉树  
void Inorder(BiTNode* &T){//中序递归遍历二叉树  
 if(T){//bt=null退层  
  Inorder(T->lchild);//中序遍历左子树  
  cout<data;//访问参数  
  Inorder(T->rchild);//中序遍历右子树  
 }  
 else cout<<"";  
 }//Inorder  

//=================================================后序递归遍历二叉树  
void Posorder(BiTNode* &T){  
 if(T){  
  Posorder(T->lchild);//后序递归遍历左子树  
  Posorder(T->rchild);//后序递归遍历右子树  
  cout<data;//访问根结点  
 }  
 else cout<<"";  
}  

 

(0)

本文由 Calamus 作者:calamus 发表,转载请注明来源!

热评文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注