题目
代码部分(5ms)
class Solution {
int treeTilt = 0;
public int findTilt(TreeNode root) {
dfs(root);
return treeTilt;
}
public int dfs(TreeNode node){
if(node == null)
return 0;
int left = dfs(node.left);
int right = dfs(node.right);
treeTilt += Math.abs(left-right);
return left + right + node.val;
}
}
-
每个节点的坡度为左子树所有节点值之和 与 右子树所有节点值之和的差(绝对值)
-
调用dfs()
-
若当前节点为空,返回0
-
获取当前节点的 左子树之和 left ,获取右子树之和 right,并向左右子树递归
-
将每个节点的坡度增入 treeTilt\
-
返回当前节点与左右子树节点之和给父节点