1080. 根到叶路径上的不足节点
# 1080. 根到叶路径上的不足节点 (opens new window)
解题思路:dfs+后续遍历
需要考虑非叶子节点leftres为false有两种情况(一种是左子树不满足,另一种是没有左孩子),而无论是哪种只要为false就切割。
当前节点返回时,也不需要考虑是否同时为false,或者没有左/右孩子另一边为false。用或运算符 ‘|| ’只要有一边满足limit大小,那么当前节点以及祖先节点肯定都不是 不足节点,直接返回true。
class Solution {
public TreeNode sufficientSubset(TreeNode root, int limit) {
if (!dfs(root, limit, 0)) return null;
return root;
}
public boolean dfs(TreeNode root, int limit, int sum) {
if (root.left == null && root.right == null) {
return sum + root.val >= limit;
}
boolean leftres=root.left==null?false:dfs(root.left, limit, sum + root.val);
boolean rightres=root.right==null?false:dfs(root.right, limit, sum + root.val);
if(!leftres) root.left=null;
if(!rightres) root.right=null;
return leftres||rightres
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
编辑 (opens new window)
上次更新: 2023/12/15, 15:49:57