zoukankan      html  css  js  c++  java
  • C++二叉树先序、中序、后序遍历

     1 #include <iostream>
     2 using namespace std;
     3 
     4 typedef struct BTNode
     5 {
     6     char data;
     7     struct BTNode * lchild;
     8     struct BTNode * rchild;
     9 }BTNode;
    10 
    11 BTNode * initBTNode()
    12 {
    13     BTNode *node = (BTNode*)malloc(sizeof(BTNode));
    14     node->lchild=0;
    15     node->rchild=0;
    16     return node;
    17 }
    18 
    19 BTNode * init(BTNode *p)
    20 {
    21     BTNode *A=initBTNode();
    22     BTNode *B=initBTNode();
    23     BTNode *C=initBTNode();
    24     BTNode *D=initBTNode();
    25     BTNode *E=initBTNode();
    26     BTNode *F=initBTNode();
    27         
    28     A->data='A';
    29     B->data='B';
    30     C->data='C';
    31     D->data='D';
    32     E->data='E';
    33     F->data='F';
    34     
    35     C->lchild=E;
    36     C->rchild=F;
    37     B->lchild=D;
    38     A->rchild=C;
    39     A->lchild=B;
    40 
    41     p=A;
    42     return p;
    43 }
    44 
    45 void visit(BTNode *p)
    46 {
    47     cout << p->data << " ";
    48 }
    49 
    50 void preorder(BTNode *p)
    51 {
    52     if(p!=0)
    53     {
    54         visit(p);
    55         preorder(p->lchild);
    56         preorder(p->rchild);
    57     }
    58 }
    59 
    60 void inorder(BTNode *p)
    61 {
    62     if(p!=0)
    63     {
    64         inorder(p->lchild);
    65         visit(p);
    66         inorder(p->rchild);
    67     }
    68 }
    69 
    70 void postorder(BTNode *p)
    71 {
    72     if(p!=0)
    73     {
    74         postorder(p->lchild);
    75         postorder(p->rchild);
    76         visit(p);
    77     }
    78 }
    79 
    80 int main(int argc, char* argv[])
    81 {
    82     BTNode *node=new BTNode;
    83     BTNode *p=init(node);
    84     cout << "先序遍历:" ;
    85     preorder(p);
    86     cout << endl;
    87     cout << "中序遍历:" ;
    88     inorder(p);
    89     cout << endl;
    90     cout << "后序遍历:" ;
    91     postorder(p);
    92     cout << endl;
    93     return 0;
    94 }


     

  • 相关阅读:
    联合省选 2020 题解
    [省选联考 2020 A 卷] 组合数问题
    【NOI2016】循环之美
    MySQL 之 json 数据操作
    使用Redis和定时实现延时消费
    事务,这次还有不清楚的吗,一次实战坑
    哨兵redis配置
    记录一次shell脚本的使用
    记录一次工作中的SQL优化,临时表和CountDownLatch
    JAVA流读取文件并保存数据
  • 原文地址:https://www.cnblogs.com/xxdfly/p/4467274.html
Copyright © 2011-2022 走看看