zoukankan      html  css  js  c++  java
  • 二叉树的建立与遍历方法

     

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cmath>
     5 #include<cstring>
     6 #include<set>
     7 #include<map>
     8 #include<queue>
     9 #include<vector>
    10 
    11 using namespace std;
    12 
    13 typedef struct node{
    14     char data;
    15     struct node *left, *right;
    16 }node, *BiTree;
    17 
    18 //创建一个二叉树
    19 BiTree CreateBiTree(BiTree T){
    20     char ch;
    21     cin>>ch;
    22     if (ch == '#')
    23         T = NULL;
    24     else {
    25         T = new node;
    26         if (!T)
    27             exit(-1);
    28         T->data = ch;
    29         T->left = CreateBiTree(T->left);
    30         T->right = CreateBiTree(T->right);
    31     }
    32     return T;
    33 }
    34 
    35 //二叉树的先序遍历
    36 void PreOrder(BiTree T){
    37     if (T){
    38         cout<<T->data<<" ";
    39         PreOrder(T->left);
    40         PreOrder(T->right);
    41     }
    42 }
    43 
    44 //二叉树的中序遍历
    45 void InOrder(BiTree T){
    46     if (T){
    47         InOrder(T->left);
    48         cout<<T->data<<" ";
    49         InOrder(T->right);
    50     }
    51 }
    52 
    53 //二叉树的后序遍历
    54 void PostOrder(BiTree T){
    55     if (T){
    56         PostOrder(T->left);
    57         PostOrder(T->right);
    58         cout<<T->data<<" ";
    59     }
    60 }
    61 
    62 //二叉树的层序遍历
    63 void bfsOrder(BiTree T){
    64     queue<BiTree> q;
    65     q.push(T);
    66     while(!q.empty()){
    67         BiTree t = q.front();
    68         cout<<t->data<<" ";
    69         q.pop();
    70         if (t->left != NULL) q.push(t->left);
    71         if (t->right != NULL) q.push(t->right);
    72     }
    73 }
    74 
    75 int main()
    76 {
    77     BiTree BTree;
    78     BTree = CreateBiTree(BTree);
    79     PreOrder(BTree);
    80     cout<<endl;
    81     InOrder(BTree);
    82     cout<<endl;
    83     PostOrder(BTree);
    84     cout<<endl;
    85     bfsOrder(BTree);
    86     cout<<endl;
    87 
    88     return 0;
    89 }
     
  • 相关阅读:
    callAfter 例子2
    wxpython
    python 处理excel 进程无法退出的问题
    常用电子技术网
    Emeditor 与正则表达式
    Windows程序中的字符编码
    Delphi7 无法启动 问题搞定
    2007中国发烧盘点之作《天路》发烧女声版
    一台电脑安装多个(虚拟)网卡问题
    无法删除xxx文档/文件夹:找不到指定的路径。请确定指定的路径是否正确
  • 原文地址:https://www.cnblogs.com/robin1998/p/6359138.html
Copyright © 2011-2022 走看看