二叉树

Posted a92412

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树相关的知识,希望对你有一定的参考价值。

#include<iostream>
using namespace std;
typedef struct Node{
 char data;
 struct Node *lchild;
 struct Node *rchild;
}BTNode, *BTree;
void PreOrder(BTree b);
void InOrder(BTree b);
void PostOrder(BTree b);
void init(BTree *b);
void CreatTree(BTree *b);
int main(){
 BTree b;
 init(&b);
 cout<<"创建二叉树,请输入数据:(输入‘.‘则停止在该结点输入)"<<endl;
 CreatTree(&b);
 int i;
 while(1){
  cout<<"输入1:先序遍历二叉树"<<endl;
  cout<<"输入2:中序遍历二叉树"<<endl;
  cout<<"输入3:后序遍历二叉树"<<endl;
  cout<<"输入0:退出" <<endl;
  cin>>i;
  switch(i){
   case 1:PreOrder(b);cout<<endl;break;
   case 2:InOrder(b);cout<<endl;break;
   case 3:PostOrder(b);cout<<endl;break;
   default :break;
  }
  if(i==0)
    break;
 }
 return 0;
}
void CreatTree(BTree *b){
 char a;
 cin>>a;
 if(a==‘.‘)
     *b = NULL;
 else{
  (*b)=new BTNode;
  (*b)->data=a;
  CreatTree(&((*b)->lchild));
  CreatTree(&((*b)->rchild));
 }
}
void init(BTree *b)
{
    *b=new BTNode;
    (*b)->lchild=NULL;
    (*b)->rchild=NULL;
}
void PreOrder(BTree b){
 if(b!=NULL){
  cout<<b->data;
  PreOrder(b->lchild);
  PreOrder(b->rchild);
 }
}
void InOrder(BTree b){
 if(b!=NULL){
  InOrder(b->lchild);
  cout<<b->data;
  InOrder(b->rchild);
 }
}
void PostOrder(BTree b){
 if(b!=NULL){
  PostOrder(b->lchild);
  PostOrder(b->rchild);
  cout<<b->data;
 }
}

技术图片

 

以上是关于二叉树的主要内容,如果未能解决你的问题,请参考以下文章

二叉树及特殊二叉树(满二叉树完全二叉树二叉排序树平衡二叉树)的定义和性质(附详细推理过程)

二叉树二叉树的镜像

普通二叉树二叉查找树平衡二叉树常见操作汇总

SDUT 3341 数据结构实验之二叉树二:遍历二叉树

树二叉树满二叉树完全二叉树

SDUT 3341 数据结构实验之二叉树二:遍历二叉树