核心思路:
1.如果有右节点,没有左节点,直接返回False
2.如果左右节点都没有,或者只有左节点,就看看后面的节点,必须是叶节点,不能有子节点。(就是看看这是不是最后一排。)
res=[root]
flag=0
while res:
tmp=res.pop(0)
if tmp.left:
res.append(tmp.left)
if tmp.right:
res.append(tmp.right)
if tmp.right and not tmp.left:
return False
if flag:
if tmp.left or tmp.right:
return False
#左右节点都没有,或者只有左节点
if (tmp.left and not tmp.right) or (not tmp.left and not tmp.right):
flag=1
return True