Re: [閒聊] 每日leetcode已回收
昨天的
1110. Delete Nodes And Return Forest
給一個二元樹
和一個to_delete矩陣
請把所有在to_delete中的節點刪掉
並且回傳所有剩下的樹
思路:
就照做
用dfs
先把左右子節點丟到dfs裡
接著判斷node是不是要刪除的
(1)要:
就把經過dfs處理回傳後的左右子節點(如果不是NULL)記錄到result,並回傳NULL
(2)不用:
就回傳null
最後再判斷一下ROOT要不要刪掉就好
GOLANG CODE
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func delNodes(root *TreeNode, to_delete []int) []*TreeNode {
todelete := make(map[int]struct{})
for _, val := range to_delete {
todelete[val] = struct{}{}
}
res := []*TreeNode{}
var dfs func(*TreeNode) *TreeNode
dfs = func(node *TreeNode) *TreeNode {
if node == nil {
return nil
}
l := dfs(node.Left)
r := dfs(node.Right)
if _, ok := todelete[node.Val]; ok {
if l != nil {
res = append(res, l)
}
if r != nil {
res = append(res, r)
}
return nil
} else {
node.Left = l
node.Right = r
return node
}
}
dfs(root)
if _, ok := todelete[root.Val]; !ok {
res = append(res, root)
}
return res
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.71.212.132 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1721317683.A.0CC.html
推
07/18 23:52,
1年前
, 1F
07/18 23:52, 1F
→
07/18 23:54,
1年前
, 2F
07/18 23:54, 2F
→
07/18 23:56,
1年前
, 3F
07/18 23:56, 3F
討論串 (同標題文章)
完整討論串 (本文為第 522 之 1550 篇):