zoukankan      html  css  js  c++  java
  • Codevs 1051 二叉树最大宽度和高度

    1501 二叉树最大宽度和高度

     

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 白银 Silver
     
     
     
    题目描述 Description

        给出一个二叉树,输出它的最大宽度和高度。

    输入描述 Input Description

    第一行一个整数n。

    下面n行每行有两个数,对于第i行的两个数,代表编号为i的节点所连接的两个左右儿子的编号。如果没有某个儿子为空,则为0。

    输出描述 Output Description

    输出共一行,输出二叉树的最大宽度和高度,用一个空格隔开。

    样例输入 Sample Input

    5

    2 3

    4 5

    0 0

    0 0

    0 0

    样例输出 Sample Output

    2 3

    数据范围及提示 Data Size & Hint

    n<16

    默认第一个是根节点

    以输入的次序为编号

    2-N+1行指的是这个节点的左孩子和右孩子

    注意:第二题有极端数据!

              1

              0 0

    这题你们别想投机取巧了,给我老老实实搜索!

     

     

    打递归就好。。

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    
    using namespace std;
    
    bool flag;
    int kd,gd,n,i,j,lc[17],rc[17],fa[17];
    int xz(int b)
    {
        if (b)
        {
            xz(lc[b]);
            gd++;
        }
    }
    void xy(int a)
    {
        if (a)
        {
            xy(rc[a]);
            kd++;
        }
    }
    int getf(int c)
    {
        if (c != fa[c] && fa[c] != 1) return getf(fa[c]);
        else return c;
    }
    int main()
    {
        int a,b;
        cin >> n;
        for (i = 1; i <= n; ++i) fa[i]=i;
        for (i = 1; i <= n; ++i)
        {
            cin >> a >> b;
            if (a != 0) lc[i]=a;
            if (b != 0) rc[i]=b;
            if (a == 0 && b != 0) flag=1;
            fa[a] = getf(i);fa[b] = getf(i);
        }
        int maxn=0;
        for (i = 1; i <= n; ++i)
        {
            int h = 0;
            for(j = 1; j <= n; ++j)
            {
                if (fa[j] == i)
                h++;
            }
            maxn = max(maxn,h);
        }
        xz(1);
        xy(1);
        if(flag)
        cout<<kd<<" "<<max(maxn,gd);
        else cout<<kd<<" "<<gd;
    }
    点击展开
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    如何简化你的Vuex Store
    深入理解React中的setState
    vue双向绑定原理分析
    vue递归组件:树形控件
    Vue 3.0 的 Composition API 尝鲜
    React Native 与 Flutter 的跨平台之争
    javascript 变量赋值和 参数传递
    setTimeout 和 throttle 那些事儿
    一道面试题-变量声明提升~
    匹配文件扩展名两种方式
  • 原文地址:https://www.cnblogs.com/ruojisun/p/6154922.html
Copyright © 2011-2022 走看看