# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def findTilt(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root:
return 0
return self.tilt(root)+self.findTilt(root.left)+self.findTilt(root.right)
def tilt(self,roo):
if not roo.right and not roo.left:
return 0
if not roo.right and roo.left:
return roo.left.val
if not roo.left and roo.right:
return roo.right.val
else:
return abs(roo.left.val-roo.right.val)
自己写的代码,理解题目意思出了问题,应该是左子树的和减去右子树的和
class Solution: def findTilt(self, root): """ :type root: TreeNode :rtype: int """ self.ans=0 def sumnode(roo): if not roo:return 0 left,right=sumnode(roo.left),sumnode(roo.right) self.ans+=abs(left-right) return roo.val+left+right sumnode(root) return self.ans
Runtime: 104 ms, faster than 68.09% of Python3 online submissions forBinary Tree Tilt.
class Solution: def findTilt(self, root): """ :type root: TreeNode :rtype: int """ tilt = [0] generate(root,tilt) return tilt[0] def generate(node,tilt) : if not node : return 0 else : L = generate(node.left,tilt) R = generate(node.right,tilt) tilt[0] += abs(L-R) return L + R + node.val