树的高度,用C语言编写程序

2025-05-20 01:05:18
推荐回答(2个)
回答1:

#include 

int main () 
{
    int a, b, n, m = 0;
    int tree[1000] = {0}; /* 最大结点数+1 */

    scanf("%d", &n);
    while (n-- > 1) //根节点计算在节点个数内,就是用1,否则使用0
    {
        scanf("%d %d", &a, &b);
        tree[b] = tree[a] + 1;
        if (m < tree[b]) m = tree[b];
    }

    printf("%d", m + 1);
    return 0;
}

回答2:

思路为叶子的高度是父结点加一,记下最大的那个。

#include 

int main () {
    int a, b, n, m = 0;
    int tree[1000] = {0}; /* 最大结点数+1 */

    scanf("%d", &n);
    while (scanf("%d%d", &a, &b) > 0) {
        tree[b] = tree[a] + 1;
        if (m < tree[b]) m = tree[b];
    }

    printf("%d", m + 1);
    return 0;
}