
Problem
Solution
Initial thoughts
Python implementation
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 implementation
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; } }
|
Time complexity
O(n).
Space complexity
O(n).
Links
563. Binary Tree Tilt
(中文版) 算法笔记: 力扣#563 二叉树的坡度
近期评论