def height(node):
if not node: return 0
left = height(node.left)
right = height(node.right)
return -1 if min(left, right) == -1 or abs(left-right) > 1 else max(left, right) + 1
return height(root) != -1
LeetCode.257 二叉树的所有路径
def backtrack(res, result, last_node):
choose = []
if last_node.left: choose.append(last_node.left)
if last_node.right: choose.append(last_node.right)
if not choose:
res.append(result)
return
for i in choose:
resulted = result
result += f"->{i.val}"
backtrack(res, result, i)
result = resulted
res = []
backtrack(res, str(root.val), root)
return res
LeetCode.404 左叶子之和
if not root: return 0
left = root.left.val if root.left and not root.left.left and not root.left.right else self.sumOfLeftLeaves(root.left)
right = self.sumOfLeftLeaves(root.right)
return left + right