1325. 删除给定值的叶子节点


来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/delete-leaves-with-a-given-value
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
注意一点,这里的叶子节点不是绝对的叶子节点,删除之后称为叶子节点的也会认为是叶子节点。
依旧是回溯。进行判断,如果左右子树有数据返回,说明不是该节点不是叶子节点,返回该节点;如果都是null,则需要判断该节点的值,是目标值,则返回null;不是则返回该节点。
public TreeNode removeLeafNodes(TreeNode root, int target) {
if(root == null) {
return null;
}
TreeNode left = removeLeafNodes(root.left, target);
TreeNode right = removeLeafNodes(root.right, target);
root.left = left;
root.right = right;
// 只要有一个是,说明不是叶子节点了。
if(left != null || right != null) {
return root;
}
// 此时都是null
return root.val == target ? null : root;
}
浙公网安备 33010602011771号