二叉树

 1 #include <iostream>
 2 #include <queue>
 3 using namespace std;
 4 typedef struct Bnode {
 5     int data;
 6     struct Bnode *lchild,*rchild;
 7 }Bnode,*Btree; 
 8 void preorder(Btree T){//先序 
 9       if(T){
10         cout<<T->data<<" ";
11             preorder(T->lchild);
12             preorder(T->rchild);
13       }
14 }
15 void inorder(Btree T){//中序 
16     if(T){
17         inorder(T->lchild);
18         cout<<T->data<<" ";
19         inorder(T->rchild);
20     }
21 }
22 void posorder(Btree T){//后序 
23     if(T){
24         posorder(T->lchild);
25         posorder(T->rchild);
26         cout<<T->data<<" ";
27     }    
28 }
29 bool leveltraverse(Btree T){ 
30     Btree p;
31     if(!T)
32         return false;
33     queue<Btree>Q;//创建队列 指针类型
34     Q.push(T);//根指针入队
35     while(!Q.empty()){//如果队列不为空 
36         p=Q.front();//取出队头
37         Q.pop();//队头元素出队
38         cout<<p->data<<" ";
39     if(p->lchild)
40         Q.push(p->lchild);//左孩子指针入队 
41     if(p->rchild)
42         Q.push(p->rchild);//右孩子指针入队 
43     } 
44     return true;
45 }
46 void Createtree(Btree &T){//创建二叉树
47     char ch;
48     cin>>ch;//按先序次序输入二叉树节点的值(一个字符) 
49     if(ch=='#'){
50         T=NULL;//递归结束,建空树    
51     }
52     else{
53         T=new Bnode;
54         T->data=ch;
55         Createtree(T->lchild);
56         Createtree(T->rchild);
57     } 
58 }
59 int main(){
60 
61     return 0;
62 }

 

posted @ 2023-02-01 15:26  一纸书歌  阅读(31)  评论(0)    收藏  举报