1080. 根到叶路径上的不足节点

1080. 根到叶路径上的不足节点

1080. 根到叶路径上的不足节点_第1张图片


C代码:二叉树

// 删除不足路径上的所有节点!后序处理!

bool dfs(struct TreeNode *node, int sum, int limit) {
    if (node == NULL) {
        return false;
    }
    if (node->left == NULL && node->right == NULL) {  // 叶子节点、前序判断!判断是否满足要求再dfs!
        return (node->val + sum) >= limit;
    }
    bool left = dfs(node->left, sum + node->val, limit);
    bool right = dfs(node->right, sum + node->val, limit);
    if (!left) {           // 后序处理 △,对node的子节点赋值,不能对node = NULL!
        node->left = NULL;
    }
    if (!right) {
        node->right = NULL;
    }
    return left || right;
}

struct TreeNode* sufficientSubset(struct TreeNode* root, int limit){
    bool flag = dfs(root, 0, limit);
    return flag ? root : NULL;
}

你可能感兴趣的:(LeetCode刷题,深度优先,算法)