zoukankan      html  css  js  c++  java
  • 4-9 二叉树的遍历 (25分)

    4-9 二叉树的遍历   (25分)

    输出样例(对于图中给出的树):

    Inorder: D B E F A G H C I
    Preorder: A B D F E C G H I
    Postorder: D E F B H G I C A
    Levelorder: A B C D F G I E H
    
     代码:(都是遍历的算法)
     1 //  4-9 二叉树的遍历
     2 //
     3 //  Created by Haoyu Guo on 04/02/2017.
     4 //  Copyright © 2017 Haoyu Guo. All rights reserved.
     5 //
     6 #include <stdio.h>
     7 #include<iostream>
     8 #include <stdlib.h>
     9 #define OVERFLOW -2
    10 using namespace std;
    11 typedef char ElementType;
    12 typedef struct TNode *Position;
    13 typedef Position BinTree;
    14 struct TNode{
    15     ElementType Data;
    16     BinTree Left;
    17     BinTree Right;
    18 };
    19 
    20 int CreatBinTree(BinTree &T)//创建二叉树
    21 {
    22     char ch;//按先序的方式输入
    23     cin >> ch;
    24     if (ch == '#')  T=NULL;
    25     else {
    26         if (!(T = (BinTree)malloc(sizeof(TNode)))) exit(OVERFLOW);
    27         T->Data = ch;
    28         CreatBinTree(T->Left);
    29         CreatBinTree(T->Right);
    30     }
    31     return 0;
    32 }
    33 void InorderTraversal( BinTree BT );
    34 void PreorderTraversal( BinTree BT );
    35 void PostorderTraversal( BinTree BT );
    36 void LevelorderTraversal( BinTree BT );
    37 
    38 int main()
    39 {
    40     BinTree BT;
    41     CreatBinTree(BT);
    42     printf("Inorder:");    InorderTraversal(BT);    printf("
    ");
    43     printf("Preorder:");   PreorderTraversal(BT);   printf("
    ");
    44     printf("Postorder:");  PostorderTraversal(BT);  printf("
    ");
    45     printf("Levelorder:"); LevelorderTraversal(BT); printf("
    ");
    46     return 0;
    47 }
    48 /* 你的代码将被嵌在这里 */
    49 void InorderTraversal( BinTree BT )//中根遍历
    50 {
    51     if(BT==NULL)
    52         return;
    53     else
    54     {
    55         InorderTraversal(BT->Left);
    56         printf(" %c",BT->Data);
    57         InorderTraversal(BT->Right);
    58     }
    59 }
    60 void PreorderTraversal( BinTree BT )//先序遍历
    61 {
    62     if(BT==NULL) return;
    63     else{
    64         printf(" %c",BT->Data);
    65         PreorderTraversal(BT->Left);
    66         PreorderTraversal(BT->Right);
    67     }
    68 }
    69 
    70 void PostorderTraversal( BinTree BT )//后序遍历
    71 {
    72     if(BT==NULL) return;
    73     else{
    74         PostorderTraversal(BT->Left);
    75         PostorderTraversal(BT->Right);
    76          printf(" %c",BT->Data);
    77     }
    78 }
    79 void LevelorderTraversal( BinTree BT )//层序遍历
    80 {
    81     if(BT==NULL) return;
    82     else{
    83         BinTree q[100];
    84         BinTree p;
    85         int head=0,tail=0;
    86        // if(!BT) return;
    87         if(BT){
    88             q[tail++]=BT;
    89             while(tail!=head){
    90                 p=q[head++];
    91                 printf(" %c",p->Data);
    92                 if(p->Left)     q[tail++]=p->Left;
    93                 if(p->Right)    q[tail++]=p->Right;
    94             } 
    95         }
    96         
    97     }
    98 }
     
  • 相关阅读:
    shell while-ssh
    webpack 4x版本 安装后提示错误
    vuejs跨域请求解决方法
    前端开发工程师常用的网站
    微信小程序手机号快速填写及会员卡开卡组件开放
    div css左边固定右边自适应布局
    Javascript面向对象篇
    web 前端篇:web前端到底是什么?有前途吗 ?
    js页面滚动时层智能浮动定位实现:
    谈一谈jquery中的事件处理
  • 原文地址:https://www.cnblogs.com/guohaoyu110/p/6365687.html
Copyright © 2011-2022 走看看