zoukankan      html  css  js  c++  java
  • Falling Leaves

    http://poj.org/problem?id=1577

    View Code
    #include <stdio.h>
    #include <string.h>
    #include <malloc.h>
    typedef struct BiTree
    {
    
        char ch;
        struct BiTree *lchild;
        struct BiTree *rchild;
    }BiTree;
    
    
    BiTree *createBiTree(char ch)
    {
        BiTree *leaf = (BiTree *)malloc(sizeof(BiTree));
        leaf->ch = ch;
        leaf->lchild = NULL;
        leaf->rchild = NULL;
        return leaf;
    }
    BiTree *insertBiTree(BiTree *root, char ch)
    {
        BiTree *leaf = root;
    
        if(root == NULL)
        {
            root = createBiTree(ch);
            return root;
        }
    
        while(leaf)
        {
            if((leaf->ch) > ch)
            {
                if(leaf->lchild == NULL)
                {
                    leaf->lchild = createBiTree(ch);
                    break;
                }
                else
                {
                    leaf = leaf->lchild;
                }
            }
            else  if((leaf->ch) < ch)
            {
                if(leaf->rchild == NULL)
                {
                    leaf->rchild = createBiTree(ch);
                    break;
                }
                else
                {
                    leaf = leaf->rchild;
                }
            }
        }
    
        return root;
    }
    
    void preorder(BiTree *root)
    {
        if(root!=NULL)
        {
            printf("%c", root->ch) ;
            preorder(root->lchild) ;
            preorder(root->rchild) ;
        }
    
    }
    
    int main()
    {
        char str[50], p[10000];
        int length;
        int i;
        BiTree *root = NULL;
    
    
        while(1)
        {
            scanf("%s", str);
            if(strcmp(str, "*") == 0 || strcmp(str, "$") == 0)
            {
                length = strlen(p);
                for(i = length-1; i >= 0; i--)
                {
                   root = insertBiTree(root, p[i]);
                }
                preorder(root);
                printf("\n");
                if(strcmp(str, "$") == 0)  break;
                root = NULL;
                memset(p, '\0', sizeof(p));
    
            }
            else
            {
                strcat(p, str);
            }
        }
    
        return 0;
    }

    题目大意:按照题目给出的叶子顺序,找出原来的二叉排序树。

    解:按照题目给出的顺序,倒过来插入到二叉排序树中即可构造原来的树。

  • 相关阅读:
    JAVA 笔记二  转
    JAVA 笔记一  转
    在Eclipse中设置中文JavaDOC
    java session用法
    使用Session防止表单重复提交
    君の瞳に乾杯
    今夜では一人で雛祭り 03
    今夜では一人で雛祭り 02
    今夜では一人で雛祭り    001
    十年目のバレンタインデー   002
  • 原文地址:https://www.cnblogs.com/yelan/p/2994224.html
Copyright © 2011-2022 走看看