c++二叉树的建立

xiaoxiao2021-02-28  54

从别处找来几个例子,感觉还可以,同学们拿回去看看吧,有什么地方不懂可以下可以后来实验室问我。 [cpp] view plain copy print ? //==========================================定义头部  #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<<"";  }  //================================================
转载请注明原文地址: https://www.6miu.com/read-83935.html

最新回复(0)