Skip to content

🌴 二叉树的坡度

📝 题目描述

​ 给你一个二叉树的根节点root,计算并返回整个树的坡度。

​ 一个树的节点的坡度定义即为,该节点左子树的节点之和和右子树节点之和的差的绝对值。如果没有左子树的话,左子树的节点之和为0;没有右子树的话也一样。空节点的坡度是0

整个树的坡度就是其所有节点的坡度之和。

📋 代码模板

java
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int findTilt(TreeNode root) {

    }
}
typescript
/**
 * Definition for a binary tree node.
 * class TreeNode {
 *     val: number
 *     left: TreeNode | null
 *     right: TreeNode | null
 *     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.left = (left===undefined ? null : left)
 *         this.right = (right===undefined ? null : right)
 *     }
 * }
 */

function findTilt(root: TreeNode | null): number {
    
}

💡 提示

  1. 树中节点数目的范围在 [0,104]

  2. 1000<=Node.val<=1000

🚀 示例

🖊️ 题解

后序遍历

可惜没有如果

java
class Solution {
    public int findTilt(TreeNode root) {
        int[] tilt = new int[1];
        dfs(root, tilt);
        return tilt[0];
    }

    private int dfs(TreeNode node, int[] tilt) {
        if (node == null) {
            return 0;
        }
        int leftSum = dfs(node.left, tilt);
        int rightSum = dfs(node.right, tilt);
        tilt[0] += Math.abs(leftSum - rightSum);
        return node.val + leftSum + rightSum;
    }
}
typescript
function findTilt(root: TreeNode | null): number {
    const tilt: number[] = [0];
    dfs(root, tilt);
    return tilt[0];
}

function dfs(node: TreeNode | null, tilt: number[]): number {
    if (node == null) {
        return 0;
    }
    const leftSum = dfs(node.left, tilt);
    const rightSum = dfs(node.right, tilt);
    tilt[0] += Math.abs(leftSum - rightSum);
    return leftSum + rightSum + node.val;
}

💭 复杂度分析

上次更新于: