zoukankan      html  css  js  c++  java
  • leetcode 1110. 删点成林

    题目描述:

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

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

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

    示例:

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

    提示:

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

    思路分析:

    涉及树,利用递归求解。对于每一棵树,若其在待删除的结点数组中,且其父节点不在当前森林中,则添加这棵树到当前森林。其中在递归过程可以更新每棵树的左右子树,根据其左右子树的根结点是否在待删除结点数组中进行判断,若在,则当前的树的对应左右子树置为空。

    代码:

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     unordered_set<int> delete_node;
    13     vector<TreeNode*>res;
    14     TreeNode* preorder(TreeNode* root, bool n_root)
    15     {
    16         if(root == nullptr)
    17             return nullptr;
    18         bool is_delete = delete_node.count(root->val)>0;
    19         if(!is_delete && n_root)
    20             res.push_back(root);
    21         root->left = preorder(root->left, is_delete);
    22         root->right = preorder(root->right, is_delete);
    23         return is_delete ? nullptr:root;
    24     }
    25     vector<TreeNode*> delNodes(TreeNode* root, vector<int>& to_delete) {
    26         if(root==nullptr)
    27             return res;
    28         delete_node = unordered_set<int>(to_delete.begin(), to_delete.end());
    29         preorder(root, true);
    30         return res;
    31     }
    32 };
  • 相关阅读:
    微服务架构 技能图谱skill-map
    LiveTelecast直播平台技术图谱skill-map
    OpenResty 技术图谱skill-map
    HearthBuddy 召唤随从的问题
    五子棋AI教程
    HearthAgent A Hearthstone agent
    Monte Carlo Tree Search – beginners guide
    Programming a Hearthstone agent using Monte Carlo Tree Search(chapter one)
    Add hyperlink to textblock wpf
    What do you do as a DevOps?
  • 原文地址:https://www.cnblogs.com/LJ-LJ/p/11435137.html
Copyright © 2011-2022 走看看