563. Binary Tree Tilt 发表于 2022-01-28 12345678910111213141516171819202122232425class Solution { public int findTilt(TreeNode root) { if (root == null) { return 0; } return tilt(root) + findTilt(root.left) + findTilt(root.right); } private int tilt(TreeNode node) { if (node == null) { return 0; } return Math.abs(nodeSum(node.left) - nodeSum(node.right)); } private int nodeSum(TreeNode node) { if (node == null) { return 0; } return node.val + nodeSum(node.left) + nodeSum(node.right); }} 123456789101112131415161718192021222324class Solution { private static class TiltHolder { private int tilt; } public int findTilt(TreeNode root) { TiltHolder tiltHolder = new TiltHolder(); nodeSum(root, tiltHolder); return tiltHolder.tilt; } private int nodeSum(TreeNode node, TiltHolder tiltHolder) { if (node == null) { return 0; } int leftSum = nodeSum(node.left, tiltHolder); int rightSum = nodeSum(node.right, tiltHolder); tiltHolder.tilt += Math.abs(leftSum - rightSum); return node.val + leftSum + rightSum; }} Reference563. Binary Tree Tilt