#384. 第 n 层的节点数
第 n 层的节点数
第 n 层的节点数
题目描述
给定一棵用先序遍历(含空指针标记)表示的二叉树(-1 表示空指针),以及一个正整数 n(根为第 1 层),请输出该二叉树第 n 层的节点个数。
先序序列构建二叉树模板代码:
struct Node {
int data;
Node* left, *right;
};
// 按先序创建,-1 表示空
Node* build() {
int x; std::cin >> x;
if (x == -1) return nullptr;
Node* node = new Node();
node->data = x;
node->left = build();
node->right = build();
return node;
}
int main() {
Node* root = build();
}
输入格式
- 第 1 行:若干个整数,表示二叉树的先序遍历序列,使用
-1表示空节点,数之间以空格分隔。先序顺序为:根、左子树、右子树,空子树以-1占位。 - 第 2 行:一个正整数
n,表示需要统计的层号(根为第 1 层)。
输出格式
- 只有一行,一个整数,表示第
n层的节点个数。
输入输出样例 #1
输入 #1
1 2 -1 -1 3 4 -1 -1 5 -1 -1
2
输出 #1
2
输入输出样例 #2
输入 #2
1 -1 -1
3
输出 #2
0
说明/提示
- 约定:输入使用先序遍历(根、左、右),以
-1作为空指针占位。 - 当
n < 1或第n层不存在时,输出0。 - 可用递归或队列分层法实现。