作者JIWP (神楽めあ的錢包)
看板Marginalman
標題Re: [閒聊] 每日leetcode
時間Wed Jun 26 17:28:19 2024
1382. Balance a Binary Search Tree
給你一個二元搜尋樹
想辦法把它變成深度不相差超過1
思路:
先把所有節點的值由記錄下來
再去做成題目要求的樣子
太久沒寫BST,差點忘記要怎麼寫
寫起來有夠卡
golang code :
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func balanceBST(root *TreeNode) *TreeNode {
var arr []int
sortarray(root, &arr)
return dfs(arr)
}
func sortarray(node *TreeNode, arr *[]int) {
if node == nil {
return
}
sortarray(node.Left, arr)
*arr = append(*arr, node.Val)
sortarray(node.Right, arr)
}
func dfs(arr []int) *TreeNode {
if len(arr) == 0 {
return nil
}
res := &TreeNode{}
res.Val = arr[len(arr)/2]
res.Left = dfs(arr[:len(arr)/2])
res.Right = dfs(arr[len(arr)/2+1:])
return res
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.184.232 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1719394102.A.522.html
→ yam276: :O 06/26 17:31
→ yam276: 今天忘了寫題目了 06/26 17:31
推 DJYOMIYAHINA: 法國我 06/26 17:31
→ JIWP: 我要法克你 06/26 17:32
推 sustainer123: 我本來是想能不能邊遍歷邊改 06/26 17:32
→ sustainer123: 後來想想直接紀錄比較快 06/26 17:32
→ JIWP: 我覺得沒辦法 06/26 17:33
推 oin1104: 模型 送我 我快哭了 06/26 17:34