zoukankan      html  css  js  c++  java
  • POJ 1577 Falling Leaves

    题意:给出一些字符串,从上到下的建树,输出其前序遍历

    像前面那一题一样,先建树,然后再递归前序遍历

    不过想像上一题那样用数组建树,建树和上题一样的办法,可是应该怎么输出前序遍历呢= =

    还是看的题解= =

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath>   
     5 #include<algorithm>  
     6 using namespace std;
     7 
     8 typedef long long LL;
     9 const int maxn=105;
    10 char str[maxn][maxn];
    11 
    12 typedef struct node{
    13     char v;
    14     node *l,*r;
    15 } node;
    16 
    17 node* newnode(char ch){   // 创建一个新的节点 
    18     node* u=(node*)malloc(sizeof(node));
    19     if(u!=NULL){
    20         u->v=ch;
    21     u->l=u->r=NULL;
    22     }
    23     return u;
    24 }
    25 
    26 node* addnode(char ch,node* nd){ // 增加节点 
    27     if(nd==NULL) nd=newnode(ch);
    28     else{
    29         if(ch>=nd->v) nd->r=addnode(ch,nd->r);//如果更大, 放在当前这个头的右子树 
    30         else nd->l=addnode(ch,nd->l);//如果更小,放在 当前这个头的左子树 
    31     }
    32     return nd;
    33 }
    34 
    35 void dfs(node* nd){
    36     if(nd!=NULL){
    37         printf("%c",nd->v);
    38         dfs(nd->l);
    39         dfs(nd->r);
    40     }
    41 }
    42 
    43 int main()
    44 {
    45     int i,j,cnt=0;
    46     node *root=NULL;
    47     while(scanf("%s",str[cnt])){
    48         char tmp=str[cnt][0];
    49         if(tmp=='*'||tmp=='$'){
    50             for(i=cnt-1;i>=0;i--)
    51                 for(j=0;j<strlen(str[i]);j++)
    52                 root=addnode(str[i][j],root);
    53                 
    54                 dfs(root);
    55                 printf("
    ");
    56                 root=NULL;
    57                 cnt=0;
    58                 memset(str,0,sizeof(str));
    59         }
    60         else 
    61         cnt++;
    62         if(tmp=='$') break;
    63     }
    64     return 0;
    65 }
    View Code

    话说做了几题二叉树= =还是不会建树啊啊啊----

  • 相关阅读:
    LeetCode_35.搜索插入位置
    LeetCode_349.两个数组的交集
    LeetCode_344.反转字符串
    LeetCode_34.在排序数组中查找元素的第一个和最后一个位置
    LeetCode_303.区域和检索
    LeetCode_3.无重复字符的最长子串
    LeetCode_292.Nim 游戏
    LeetCode_283.移动零
    LeetCode_27.移除元素
    LeetCode_268.丢失的数字
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4335822.html
Copyright © 2011-2022 走看看