• 求二叉树的深度


    求二叉树的深度

    Time Limit: 1000MS Memory limit: 65536K

    题目描述

    已知一颗二叉树的中序遍历序列和后序遍历序列,求二叉树的深度。

    输入

    输入数据有多组,输入T组数据。每组数据包括两个长度小于<font face="\"Times" new="" roman,="" serif\"="" style="padding: 0px; margin: 0px;">50的字符串,第一个字符串表示二叉树的中序遍历,第二个表示二叉树的后序遍历。

    输出

    输出二叉树的深度。

    示例输入

    2
    dbgeafc
    dgebfca
    lnixu
    linux

    示例输出

    4
    3
    
    
    
    
    
    
    
    
    
    
    
    
                     

    #include<stdio.h>  
    #include<stdlib.h>  
    #include<string.h>  
      
    typedef struct node  
    {  
        char data;  
        struct node *lchild; //左孩子指针
    struct node *rchild;  //右孩子指针
    }tree;  
      
    tree *creat(char *pre,char *in,int len) //创建二叉树 
    {  
        tree *p;  
        if(len<=0) //返回上一层函数调用,
    {
            p=NULL;  
    }
        else  
        {  
            p=(tree *)malloc(sizeof(tree));  //开辟新的内存空间
            p->data=*(pre+len-1); //将pre[]的最后一个字符赋给p->data;
            char *a;  
            for(a=in;a!=NULL;a++)  //查找p->data在in[]字符串的位置
                if(*a==*(pre+len-1))  
    {
                break;  
    }
            int l=a-in;  //p->data在in[]字符串的位置
            p->lchild=creat(pre,in,l);  
            p->rchild=creat(pre+l,a+1,len-l-1);  
        }  
        return p;  
    }  
      
    int deep(tree *t)  
    {  
        if(!t)  
            return 0;  
        int lchild,rchild;  
        lchild=deep(t->lchild);  
        rchild=deep(t->rchild);  
        return lchild>rchild?lchild+1:rchild+1;  
    }  
      
    int main()  
    {  
        int t;  
        scanf("%d",&t);  
        tree *T;  
        while(t--)  
        {  
            char str1[55],str2[55];  
            scanf("%s%s",str1,str2);  
            int l=strlen(str1);  
            T=creat(str2,str1,l);  
            printf("%d\n",deep(T));  
        }  
    }  
























    
    
  • 相关阅读:
    1055 The World's Richest (25 分)
    1048 Find Coins (25 分)散列
    经典多线程问题(三)-子线程与主线程的循环打印
    经典多线程问题(二)-生产者消费者问题
    源码分析 CurrentHashMap 1.8
    源码分析 CurrentHashMap 1.7
    源码分析 HashTable与CurrentHashMap1.7与currentHashMap1.8对比
    源码分析 HashMap 1.8
    源码分析 HashMap 1.7
    Linux复习(常用命令)
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/6444637.html
Copyright © 2020-2023  润新知