本來是一道簡單題,但是Go版本不知怎的,內(nèi)部邏輯正確,就是結(jié)果不對,之前也存在這種情況,一般都是在定義全局變量之后存在這種現(xiàn)象,可能是內(nèi)存泄露?java在類里面定義沒有任何異常,很迷
解題思路:通過計算每個節(jié)點的坡度,即計算左右節(jié)點和的差值的絕對值,遞歸即可實現(xiàn)
java版本:
class Solution {
int ans;
public int findTilt(TreeNode root) {
if(root==null){
return 0;
}
calulate(root);
return ans;
}
public int calulate(TreeNode root){
if(root==null){
return 0;
}
int l=calulate(root.left),r=calulate(root.right);
ans+=Math.abs(l-r);
return l+r+root.val;
}
}
Go版本
import "fmt"
// var res_value int=0;
// var left_value int=0;
// var right_value int=0;
func findTilt(root *TreeNode) int {
// 二叉樹遍歷
if root==nil{
return 0
}
return findTilt(root.Left)+findTilt(root.Right)+abs(calulate(root.Left),calulate(root.Right))
}
func abs(num1 int, num2 int)int{
if num1>num2{
return num1-num2
}
return num2-num1
}
func calulate(root *TreeNode)int{
if root==nil{
return 0;
}
return calulate(root.Left)+calulate(root.Right)+root.Val
}