zoukankan      html  css  js  c++  java
  • 二叉树后序遍历和层次遍历

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2137&cid=1145

    View Code
     1 #include<stdio.h>   
     2 #include<string.h>   
     3 #include<malloc.h>   
     4 typedef struct tree   
     5 {   
     6     char data ;   
     7     struct tree *l, *r ;   
     8 }tree ;   
     9 tree *creat(char *root, char *in, int k )   
    10 {   
    11     tree *t ;   
    12     char *p ;   
    13     int  m ;   
    14     if(k<=0)   
    15     return NULL ;   
    16     t = (tree*)malloc(sizeof(tree)) ;   
    17     t->data = *root ;   
    18     for(p = in; p!=NULL; p++)   
    19     if(*p == *root) break ;   
    20     m = p - in ;   
    21     t->l = creat(root+1, in, m) ;   
    22     t->r = creat(root+m+1,p+1,k-m-1) ;   
    23     return t ;   
    24 }   
    25 void lastsearch(tree *t)   
    26 {   
    27     if(t!=NULL)   
    28     {   
    29         lastsearch(t->l) ;   
    30         lastsearch(t->r) ;   
    31         printf("%c", t->data) ;   
    32     }   
    33 }   
    34 void cengci(tree *t)   
    35 {   
    36     int rear = 1, front = 0 ;   
    37     tree *p[100] ;   
    38     p[0] = t ;   
    39     while(rear>front)   
    40     {   
    41         if(p[front])   
    42         {   
    43             printf("%c",p[front]->data) ;   
    44             p[rear++] = p[front]->l ;   
    45             p[rear++] = p[front]->r ;   
    46             front++ ;   
    47         }   
    48         else  
    49         front++ ;   
    50     }   
    51 }   
    52 int main()   
    53 {   
    54     tree *t ;   
    55     int k, n ;   
    56     char root[100], in[100] ;   
    57     scanf("%d", &n) ;   
    58     while(n--)   
    59     {   
    60         scanf("%s%s", root, in) ;   
    61         k = strlen(root) ;   
    62         t = creat(root, in, k ) ;   
    63         lastsearch(t) ;   
    64         puts("") ;   
    65         cengci(t) ;   
    66         puts("") ;   
    67     }   
    68     return 0;   
    69 }   

     已知先序和中序序列,求后序序列

    从先序遍历中读入根节点;然后从中序遍历中找到与根节点相等的元素,将中序序列分成两个部分,左边的为二叉树的左子树,右边为二叉树的右子树;最后递归调用得到根节点的左右子树

  • 相关阅读:
    Lua 学习之基础篇七<Lua Module,Package介绍>
    Lua 学习之基础篇六<Lua IO 库>
    Lua 学习之基础篇五<Lua OS 库>
    Lua 学习之基础篇四<Lua table(表)>
    Lua 学习之基础篇三<Lua 字符串操作>
    时空穿梭
    【集训队作业】line
    动态几何问题
    博弈论与概率统计
    wombats
  • 原文地址:https://www.cnblogs.com/yelan/p/2917666.html
Copyright © 2011-2022 走看看