1172. 二叉树倾斜程度
给定一个二叉树,返回整棵树的倾斜程度。
一个节点的倾斜程度定义:左子树的所有节点和,与右子树所有节点和的绝对值差。空节点的倾斜程度定义为0。
整棵树的倾斜程度定义:所有节点的倾斜程度之和。
样例
样例 1:
输入:
{1,2,3}
输出: 1
解释:
1
/ \
2 3
节点2的倾斜程度 : 0
节点3的倾斜程度 : 0
节点1的倾斜程度 : |2-3| = 1
整棵树的倾斜程度 : 0 + 0 + 1 = 1
**样例 2: **
输入:
{1,1,#,2,3}
输出:
7
解释:
1
/
1
/ \
2 3
注意事项
-
任何子树的所有节点和不会超过32位整数的范围。
-
所有的倾斜程度值,不会超过32位整数的范围。
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
public int findTilt(TreeNode root) {
// Write your code here
if (root == null) return 0;
return Math.abs(helper(root.right) - helper(root.left))
+ findTilt(root.left) + findTilt(root.right);
}
int helper(TreeNode node) {
if (node == null ) return 0;
return node.val + helper(node.left)+ helper(node.right);
}
}