LeetCode之Delete Leaves With a Given Value(Kotlin)

问题:



方法:
基于树的递归,但是需要回溯当前结点,最后一直回溯到根节点,如果当前结点是叶子结点同时等于target时回溯时返回null否则返回当前结点,最后就能得到正确的结果。

class DeleteLeavesWithAGivenValue {
    class TreeNode(var `val`: Int) {
        var left: TreeNode? = null
        var right: TreeNode? = null
    }

    fun removeLeafNodes(root: TreeNode?, target: Int): TreeNode? {
        if (root == null) {
            return root
        }
        return dfs(root, target)
    }

    private fun dfs(root: TreeNode, target: Int): TreeNode? {
        root.left = root.left?.let { dfs(it, target) }
        root.right = root.right?.let { dfs(it, target) }
        if (root.left == null && root.right == null && root.`val` == target) {
            return null
        }
        return root
    }
}

有问题随时沟通

具体代码实现可以参考Github

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容