1. 程式人生 > >現在有一棵合法的二叉樹,樹的節點都是用數字表示,現在給定這棵樹上所有的父子關係,求這棵樹的高度

現在有一棵合法的二叉樹,樹的節點都是用數字表示,現在給定這棵樹上所有的父子關係,求這棵樹的高度

題目描述

現在有一棵合法的二叉樹,樹的節點都是用數字表示,現在給定這棵樹上所有的父子關係,求這棵樹的高度

輸入描述:

輸入的第一行表示節點的個數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;
}