二叉树深度
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行两个整数l、r,表示结点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