现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度

题目描述

现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度

输入描述:

输入的第一行表示节点的个数n(1 ≤ n ≤ 1000,节点的编号为0到n-1)组成,
下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号

输出描述:

输出树的高度,为一个整数

示例1

输入

5
0 1
0 2
1 3
1 4

输出

3

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    int n;
    while(cin >> n)
    {
        int h=1,f,c,temp;//h代表最总高度,f代表父节点索引,c代表子节点索引,temp代表临时高度
        vector<int> nodeH(1000,0);//节点高度
        vector<int> cNum(1000,0);//记录节点孩子点的数量
        bool isFather = true;
        while(n--)
        {
            cin >> f >> c;
            if(isFather)
            {
                nodeH[f] = 1;
                isFather = false;
            }
            if(nodeH[f] == 0 || cNum[f] == 2)
                continue;
            cNum[f] += 1;
            temp = nodeH[f] + 1;
            nodeH[c] = temp;
            if(temp > h) h = temp;
        }
        cout << h;
    }
    return 0;
}

 

 

猜你喜欢

转载自blog.csdn.net/weixin_40271182/article/details/84863596
今日推荐