列表

详情


2792. 计算满足条件的节点数

给定一棵二叉树的根节点 root 和一个整数 k 。如果一个节点满足以下条件,则称其为 足够大 :

返回满足条件的节点数。

如果 u == v 或者 vu 的祖先,则节点 u 在节点 v子树 中。

 

示例 1:

输入:root = [7,6,5,4,3,2,1], k = 2
输出:3
解释:节点编号从 1 到 7。 
节点 1 的子树中的值:{1,2,3,4,5,6,7}。由于节点的值等于 7,有 6 个节点的值小于它的值,因此它是“足够大”的。 
节点 2 的子树中的值:{3,4,6}。由于节点的值等于 6,有 2 个节点的值小于它的值,因此它是“足够大”的。 
节点 3 的子树中的值:{1,2,5}。由于节点的值等于 5,有 2 个节点的值小于它的值,因此它是“足够大”的。 
其他节点不满足条件。 
参考下面的图片可以帮助你得到更好的理解。

示例 2:

输入:root = [1,2,3], k = 1
输出:0
解释:节点编号从 1 到 3。 
节点 1 的子树中的值:{1,2,3}。由于节点的值等于 1,没有节点的值小于它的值,因此它不是“足够大”的。 
节点 2 的子树中的值:{2}。由于节点的值等于 2,没有节点的值小于它的值,因此它不是“足够大”的。 
节点 3 的子树中的值:{3}。由于节点的值等于 3,没有节点的值小于它的值,因此它不是“足够大”的。 
参考下面的图片可以帮助你得到更好的理解。

示例 3:

输入:root = [3,2,2], k = 2
输出:1
解释:节点编号从 1 到 3。 
节点 1 的子树中的值:{2,2,3}。
由于节点的值等于 3,有 2 个节点的值小于它的值,因此它是“足够大”的。 
节点 2 的子树中的值:{2}。由于节点的值等于 2,没有节点的值小于它的值,因此它不是“足够大”的。 
节点 3 的子树中的值:{2}。由于节点的值等于 2,没有节点的值小于它的值,因此它不是“足够大”的。 
参考下面的图片可以帮助你得到更好的理解。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: int countGreatEnoughNodes(TreeNode* root, int k) { } };

上一题