zoukankan      html  css  js  c++  java
  • [LC] 1110. Delete Nodes And Return Forest

    Given the root of a binary tree, each node in the tree has a distinct value.

    After deleting all nodes with a value in to_delete, we are left with a forest (a disjoint union of trees).

    Return the roots of the trees in the remaining forest.  You may return the result in any order.

    Example 1:

    Input: root = [1,2,3,4,5,6,7], to_delete = [3,5]
    Output: [[1,2,null,4],[6],[7]]

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public List<TreeNode> delNodes(TreeNode root, int[] to_delete) {
            List<TreeNode> res = new ArrayList<>();
            Set<Integer> set = new HashSet<>();
            for(int num : to_delete) {
                set.add(num);
            }
            if (!set.contains(root.val)) {
                res.add(root);
            }
            helper(root, res, set);
            return res;
        }
        
        private TreeNode helper(TreeNode root, List<TreeNode> res, Set<Integer> set) {
            if (root == null) {
                return null;
            }
            root.left = helper(root.left, res, set);
            root.right = helper(root.right, res, set);
            if (set.contains(root.val)) {
                if (root.left != null) {
                    res.add(root.left);
                }
                if (root.right != null) {
                    res.add(root.right);
                }
                return null;
            }
            return root;
        }
    }
  • 相关阅读:
    Python冒泡算法和修改配置文件
    第五章:处理数据
    第四章:持久存储
    Python之打印99乘法表
    Python之编写登录接口
    Python之文件操作
    第三章:文件与异常
    FineUI 修改config表属性
    FineUI Grid中WindowField根据列数据决定是否Enalble
    表之间不同字段的数据复制
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12484916.html
Copyright © 2011-2022 走看看