9도 OJ - 1350 - 두 갈래 나무의 깊이

제목 설명


이 나무의 깊이를 구하려면 두 갈래 나무를 입력하십시오.뿌리 결점에서 잎 결점까지 순서대로 지나가는 결점(뿌리, 잎 결점 포함)은 나무의 경로를 형성하고 가장 긴 경로의 길이는 나무의 깊이이다.

입력


첫 번째 줄의 입력은 n, n으로 결점 수를 표시하고 결점 번호는 1부터 n까지입니다.루트 결점은 1입니다.n <= 10. 다음은 n줄이 있는데 줄마다 두 개의 정형 a와 b가 있는데 이것은 i번째 노드의 좌우 아이를 나타낸다.a는 왼쪽 아이, b는 오른쪽 아이입니다.a가 -1일 때 왼쪽 아이가 없다.b가 -1일 때 오른쪽 아이가 없다.

출력


트리의 깊이를 나타내는 정형을 내보냅니다.

샘플 입력


3 2 3 -1 -1 -1 -1

샘플 출력


#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

struct TreeNode{
    int lchild;
    int rchild;
};

TreeNode Tree[20];

int depthTree(int x, int n){
    if(x < 1 || x > n)
        return 0;
    if(Tree[x].lchild==-1 && Tree[x].rchild==-1){
        return 1;
    }
    int leftdepth = depthTree(Tree[x].lchild, n);
    int rightdepth = depthTree(Tree[x].rchild, n);
    return leftdepth >= rightdepth ? leftdepth+1 : rightdepth+1;
}

int main()
{
    int n, left, right, depth;
    while(scanf("%d", &n)!=EOF){
        for(int i = 1; i <= n; i++){
            cin >> left >> right;
            Tree[i].lchild = left;
            Tree[i].rchild = right;
        }

        int depth = depthTree(1, n);
        cout << depth << endl;
    }
    return 0;
}

좋은 웹페이지 즐겨찾기