diff --git a/kt/delete-leaves-with-a-given-value.kt b/kt/delete-leaves-with-a-given-value.kt new file mode 100644 index 0000000..bf628f4 --- /dev/null +++ b/kt/delete-leaves-with-a-given-value.kt @@ -0,0 +1,28 @@ +class TreeNode(var `val`: Int) { + var left: TreeNode? = null + var right: TreeNode? = null +} + +class Solution { + fun isLeaf(node: TreeNode?): Boolean { + return node != null && node.left == null && node.right == null + } + + fun removeLeafNodes( + root: TreeNode?, + target: Int, + ): TreeNode? { + if (root == null) { + return null + } + + root.left = removeLeafNodes(root.left, target) + root.right = removeLeafNodes(root.right, target) + + if (isLeaf(root) && root.`val` == target) { + return null + } + + return root + } +}