(Leetcode 刷題)二叉樹的坡度

題目描述

給定一個二叉樹,計算整個樹的坡度。
一個樹的節(jié)點的坡度定義即為,該節(jié)點左子樹的結(jié)點之和和右子樹結(jié)點之和的差的絕對值??战Y(jié)點的的坡度是0。
整個樹的坡度就是其所有節(jié)點的坡度之和。
563. 二叉樹的坡度

解法1 遞歸

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */

public class Solution {
    //全局變量,用于計算整棵樹的坡度
    int tilt=0;
    public int findTilt(TreeNode root) {
        traverse(root);
        return tilt;
    }
    //這個函數(shù)幫助我們獲得一棵二叉樹的節(jié)點和值
    public int traverse(TreeNode root)
    {
        if(root==null )
            return 0;
        int left=traverse(root.left);
        int right=traverse(root.right);
        //一個節(jié)點的坡度是左子樹的節(jié)點和值減去右子樹的節(jié)點和值的絕對值,累加到tilt上,就是遍歷過的節(jié)點的坡度和
        tilt+=Math.abs(left-right);
        return left+right+root.val;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容