平衡二叉树:
求左右子树的高度 如果左子树下面没有了,返回-1,如果右子树没有了,返回-1,如果高度差大于1,返回-1,否则计算高度。如果最后高度不是-1,就返回True
class Solution:
def isBalanced(self, root: Optional[TreeNode]) -> bool:
def height(root):
if not root:
return 0
left = height(root.left)
if left == -1:
return -1
right = height(root.right)
if right == -1:
return -1
if abs(left-right) > 1:
return -1
return max(left, right) + 1
return height(root) != -1
所有路径 用迭代的前序遍历,回溯太难了
左叶子:左树上左右节点都是空 用层序