算法----删点成林

这篇具有很好参考价值的文章主要介绍了算法----删点成林。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目

给出二叉树的根节点 root,树上每个节点都有一个不同的值。

如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。

返回森林中的每棵树。你可以按任意顺序组织答案。

示例 1:

算法----删点成林

输入:root = [1,2,3,4,5,6,7], to_delete = [3,5]
输出:[[1,2,null,4],[6],[7]]
示例 2:

输入:root = [1,2,4,null,3], to_delete = [3]
输出:[[1,2,4]]

提示:

树中的节点数最大为 1000。
每个节点都有一个介于 1 到 1000 之间的值,且各不相同。
to_delete.length <= 1000
to_delete 包含一些从 1 到 1000、各不相同的值。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/delete-nodes-and-return-forest
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解决思路

后续遍历,即左右根

解决方法

    fun delNodes(root: TreeNode?, to_delete: IntArray): List<TreeNode?> {
        //dfs查找节点 如果有孩子节点 把自己移除掉 放入孩子节点 以此类推
        var result = ArrayList<TreeNode>()
        dfs(root,to_delete,result)
        return result
    }

    fun dfs(root: TreeNode?, to_delete: IntArray, result: MutableList<TreeNode>) {
        if (root == null) {
            return
        }
        if (root.`val` in to_delete) {
            if (root.left != null && root.left!!.`val` !in to_delete) {
                result.add(root.left)
            }

            if (root.right != null && root.right!!.`val` !in to_delete) {
                result.add(root.right)
            }

        }

        delNodes(root.left, to_delete)

        delNodes(root.right, to_delete)

        if ((root.left?.`val` ?: -1) in to_delete) {
            root.left = null
        }

        if ((root.right?.`val` ?: -1) in to_delete) {
            root.right = null
        }
    }

总结

1.过去的就不要再怀念。恋旧没有什么不好,但是也没有什么好的。
日子总要往前走,往前看。

2.成家之后哪里还有工夫陪朋友,太理想了。成家之后照顾好自己的家就行了。
除了家人,不再可能是有说走就走的旅行了文章来源地址https://www.toymoban.com/news/detail-411199.html

到了这里,关于算法----删点成林的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 二叉树经典算法题目

    省略 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如: 给定二叉树 [3,9,20,null,null,15,7] , 返回它的最大深度 3 。 思路:递归,当前数的深度等于左子数和右子树其中最大深

    2024年02月09日
    浏览(49)
  • DFS在二叉树上的表现

    原题跳转: 洛谷B3642 二叉树的遍历 题目内容: 有一个 (n(n le 10^6)) 个结点的二叉树。给出每个结点的两个子结点编号(均不超过 (n) ),建立一棵二叉树(根节点的编号为 (1) ),如果是叶子结点,则输入 0 0 。 建好树这棵二叉树之后,依次求出它的前序、中序、后序列

    2024年03月09日
    浏览(39)
  • lc 1483 树节点的第 K 个祖先(树上倍增、动态规划)

    lc 1483 树节点的第 K 个祖先 我们定义:节点的第 i 级 父节点为第 2 i 2^i 2 i 个 父节点 规律1: 节点的第 n 个父节点 = 节点的第 n i n_i n i ​ 个父节点的第 n j n_j n j ​ 个父节点,其中 n i + n j = n n_i+n_j=n n i ​ + n j ​ = n 。 (倍增) 以 二进制 为基础,节点 i 的 第 2 j 2^j 2 j 个父

    2024年04月28日
    浏览(25)
  • LeetCode算法二叉树—222. 完全二叉树的节点个数

    目录 222. 完全二叉树的节点个数 - 力扣(LeetCode) 代码: 运行结果:  给你一棵  完全二叉树  的根节点  root  ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集

    2024年02月07日
    浏览(36)
  • 树结构及其算法-二叉树节点的删除

    目录 树结构及其算法-二叉树节点的删除 C++代码 二叉树节点的删除操作稍为复杂,可分为以下3种情况。 删除的节点为树叶,只要将其相连的父节点指向NULL即可。 删除的节点只有一棵子树。 删除的节点有两棵子树。要删除节点,方式有两种,虽然结果不同,但是都符合二叉

    2024年02月05日
    浏览(30)
  • 面试算法43:在完全二叉树中添加节点

    在完全二叉树中,除最后一层之外其他层的节点都是满的(第n层有2 n-1 个节点)。最后一层的节点可能不满,该层所有的节点尽可能向左边靠拢。例如,图7.3中的4棵二叉树均为完全二叉树。实现数据结构CBTInserter有如下3种方法。 构造函数CBTInserter(TreeNode root),用一棵完全

    2024年02月06日
    浏览(30)
  • 面试算法53:二叉搜索树的下一个节点

    给定一棵二叉搜索树和它的一个节点p,请找出按中序遍历的顺序该节点p的下一个节点。假设二叉搜索树中节点的值都是唯一的。例如,在图8.9的二叉搜索树中,节点8的下一个节点是节点9,节点11的下一个节点是null。 解决这个问题的最直观的思路就是采用二叉树的中序遍历

    2024年02月06日
    浏览(25)
  • 【算法与数据结构】222、LeetCode完全二叉树的节点个数

    所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。    思路分析 :利用层序遍历,然后用num++记录节点数量。其他的例如递归法和迭代法也是如此。    层序遍历程序如下 : 复杂度分析: 时间复杂度: O ( n ) O(n) O ( n ) 。 空间复杂度: O ( n )

    2024年02月15日
    浏览(36)
  • 算法训练day16Leetcode104二叉树最大深度111二叉树最小深度222完全二叉树的节点个数

    https://www.bilibili.com/video/BV1Gd4y1V75u/?vd_source=8272bd48fee17396a4a1746c256ab0ae 用递归,但是什么顺序没想清楚 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始) 二叉树节点的高度:指从该节点到叶子节点的最长简单路径边

    2024年01月16日
    浏览(31)
  • 【算法第十四天7.28】二叉树的最大深度,二叉树的最小深度 ,完全二叉树的节点个数

    链接 力扣104-二叉树的最大深度 思路 链接 力扣111-二叉树的最小深度 思路 链接 力扣222-完全二叉树的节点个数 思路

    2024年02月14日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包