2021-11-18 563. 二叉树的坡度

本来是一道简单题,但是Go版本不知怎的,内部逻辑正确,就是结果不对,之前也存在这种情况,一般都是在定义全局变量之后存在这种现象,可能是内存泄露?java在类里面定义没有任何异常,很迷
解题思路:通过计算每个节点的坡度,即计算左右节点和的差值的绝对值,递归即可实现

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  
}

你可能感兴趣的:(2021-11-18 563. 二叉树的坡度)