Leetcode Note: Go - Binary Tree Tilt
Binary Tree Tilt - LeetCode
https://leetcode.com/problems/binary-tree-tilt/
- Go 言語で取り組んだメモ
所感
- binary tree の計算
- 左右のサブツリーノードの合計値を使って絶対値の差を計算して int で return していく
- 左右のサブツリーノードが、それぞれ左右の子ノードを持たない場合は合計を 0 として計算する
回答
Binary Tree Tilt - LeetCode
https://leetcode.com/problems/binary-tree-tilt/solution/
Go: bottom up solution - LeetCode Discuss
https://leetcode.com/problems/binary-tree-tilt/discuss/572560/Go%3A-bottom-up-solution
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func findTilt(root *TreeNode) int {
_, res := tilt(root)
return res
}
func tilt(root *TreeNode) (int,int) {
if root == nil {
return 0, 0
}
left, s1 := tilt(root.Left)
right, s2 := tilt(root.Right)
return (root.Val+left+right), (abs(left-right)+s1+s2)
}
func abs(a int) int {
if a < 0 {
return -a
}
return a
}
- 再帰関数を実装して Node を操作していきつつ、差を値を計算して return する