练习

  1. #include <iostream>  
  2. using namespace std;  
  3. struct BiTNode{  
  4.  char data;  
  5.  struct BiTNode *lchild, *rchild;//左右孩子  
  6. };  
  7. BiTNode*T;  
  8. void CreateBiTree(BiTNode* &T);  
  9. void Inorder(BiTNode* &T);  
  10. void PreOrderTraverse(BiTNode* &T);  
  11. void Posorder(BiTNode* &T);  
  12. //===========================================主函数  
  13. int main(){  
  14. cout<<"创建一颗树,其中A->Z字符代表树的数据,用“#”表示空树:"<<endl;  
  15.   CreateBiTree(T);  
  16. cout<<"先序递归遍历:"<<endl;  
  17. PreOrderTraverse(T);  
  18. cout<<endl;  
  19. cout<<"中序递归遍历:"<<endl;  
  20.   Inorder(T);  
  21. cout<<endl;  
  22. cout<<"后序递归遍历:"<<endl;  
  23.         Posorder(T);  
  24. cout<<endl;  
  25.   return 1;}  
  26. //=============================================先序递归创建二叉树树  
  27. void CreateBiTree(BiTNode* &T){  
  28.  //按先序输入二叉树中结点的值(一个字符),空格字符代表空树,  
  29.  //构造二叉树表表示二叉树T。  
  30.  char ch;  
  31.  if((ch=getchar())=='#')T=NULL;//其中getchar()为逐个读入标准库函数  
  32.  else{  
  33.   T=new BiTNode;//产生新的子树  
  34.   T->data=ch;//由getchar()逐个读入来  
  35.   CreateBiTree(T->lchild);//递归创建左子树  
  36.   CreateBiTree(T->rchild);//递归创建右子树  
  37.  }  
  38. }//CreateTree  
  39. //===============================================先序递归遍历二叉树  
  40. void PreOrderTraverse(BiTNode* &T){  
  41.  //先序递归遍历二叉树  
  42.  if(T){//当结点不为空的时候执行  
  43.   cout<<T->data;  
  44.   PreOrderTraverse(T->lchild);//  
  45.   PreOrderTraverse(T->rchild);  
  46.  }  
  47.  else cout<<"";  
  48. }//PreOrderTraverse  
  49. //================================================中序遍历二叉树  
  50. void Inorder(BiTNode* &T){//中序递归遍历二叉树  
  51.  if(T){//bt=null退层  
  52.   Inorder(T->lchild);//中序遍历左子树  
  53.   cout<<T->data;//访问参数  
  54.   Inorder(T->rchild);//中序遍历右子树  
  55.  }  
  56.  else cout<<"";  
  57.  }//Inorder  
  58. //=================================================后序递归遍历二叉树  
  59. void Posorder(BiTNode* &T){  
  60.  if(T){  
  61.   Posorder(T->lchild);//后序递归遍历左子树  
  62.   Posorder(T->rchild);//后序递归遍历右子树  
  63.   cout<<T->data;//访问根结点  
  64.  }  
  65.  else cout<<"";  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值