原題鏈接:Binary Tree Level Order Traversal
這道題有一定的難度,解法如下:
class Solution:
# @param {TreeNode} root
# @return {integer[][]}
def levelOrder(self, root):
solution = []
if root is None:
return solution
thisLevel = [root]
while len(thisLevel) > 0: # 注意這里判斷thisLevel非空的方式琴儿,我們會(huì)在本文末尾討論一下
tempNumbers = []
nextLevel = []
for temp in thisLevel:
tempNumbers.append(temp.val)
if temp.left is not None:
nextLevel.append(temp.left)
if temp.right is not None:
nextLevel.append(temp.right)
solution.append(tempNumbers)
thisLevel = nextLevel
return solution
關(guān)于判斷thisLevel
非空的方法討論:
一開始我提交的時(shí)候并不是用這種方式來判斷其非空阱冶,而是采用了
while thisLevel is not []
扳缕,事實(shí)證明這樣的判斷是無效的锥腻。
我們來做一個(gè)測試:
def h(p):
if p is None:
print("None")
elif p is []:
print("[]")
else:
print("else")
print(len(p))
執(zhí)行
print(h([]))
輸出:
else
0
None
由此可見嘱函,我們要學(xué)會(huì)避免這種判別list為空的方式蓉驹。