
问题描述
解法
分析
Python 实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
class : def findTilt(self, root): """ :type root: TreeNode :rtype: int """ self._tilt = 0 self.dfs(root) return self._tilt def dfs(self, node): if node is None: return 0 left = self.dfs(node.left) right = self.dfs(node.right) self._tilt += abs(left-right) return left+right+node.val
|
Java 实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
* Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class { private int tilt; private int dfs(TreeNode node){ if(node == null){ return 0; } int left = dfs(node.left); int right = dfs(node.right); tilt += Math.abs(left-right); return left+right+node.val; } public int findTilt(TreeNode root) { tilt = 0; dfs(root); return tilt; } }
|
时间复杂度
O(n).
空间复杂度
O(n).
链接
563. Binary Tree Tilt
563. 二叉树的坡度
(English version) Algorithm Notes: Leetcode#563 Binary Tree Tilt
近期评论