二叉树深度


Submit solution

Points: 100
Time limit: 1.0s
Memory limit: 160M

Author:
Problem type
Allowed languages
C, C++

二叉树深度

题目描述

给你一棵共有 n 个结点的二叉树(根结点编号为 1)。 对每个结点 i,给出它的左右孩子编号;若不存在则为 0(叶子结点输入 0 0)。

请你在建好这棵树后,求出它的最大深度。 这里的"深度"指:从根结点走到某个叶子结点,经过的结点层数的最大值(根所在层计为 1)。

输入格式

  • 第 1 行:整数 n,表示结点数(\(n \le 10^6\))。
  • 接下来 n 行:第 i 行两个整数 lr,表示结点 i 的左、右孩子编号。 若 l = 0 表示无左孩子;r = 0 表示无右孩子。

输出格式

  • 输出一个整数,表示这棵二叉树的最大深度。

输入输出样例 #1

输入 #1
7
2 7
3 6
4 5
0 0
0 0
0 0
0 0
输出 #1
4

说明

  • 根结点为 1,其左孩子为 2,右孩子为 7,依次类推;
  • 从根到最深叶子的路径长度为 4 层,所以答案为 4

小提示:数据规模很大,递归可能栈溢出;建议使用队列(BFS)或显式栈的迭代 DFS。


Comments

There are no comments at the moment.