Leetcode 563. 二叉树的坡度
题目
给定一个二叉树,计算整个树的坡度。
一个树的节点的坡度定义即为,该节点左子树的结点之和和右子树结点之和的差的绝对值。空结点的的坡度是0。
整个树的坡度就是其所有节点的坡度之和。
示例:
输入:
1
/ \
2 3
输出:1
解释:
结点 2 的坡度: 0
结点 3 的坡度: 0
结点 1 的坡度: |2-3| = 1
树的坡度 : 0 + 0 + 1 = 1
提示:
- 任何子树的结点的和不会超过 32 位整数的范围。
- 坡度的值不会超过 32 位整数的范围。
题解
后序遍历,计算每个节点的坡度。详细过程见代码
代码
int ans = 0;
int search(TreeNode* root){
if(root == NULL) return 0;
int left = search(root->left); //左子树结点和
int right = search(root->right); //右子树结点和
ans += abs(left-right);
return left+right+root->val;
}
int findTilt(TreeNode* root) {
search(root);
return ans;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-tilt
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。