題目:
思路+代碼:
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
# 思路:之字形打印類似於層序遍歷保存每層節點值,只是增加一個index標識符
if not root:
return []
# 初始化一個結果列表:res;標識符index;節點列表node_list;
res = []
index = -1
node_list = []
node_list.append(root)
while node_list:
# 每一層初始化保存這一層節點的列表和保存值的列表;
layer_val = []
layer_node = []
while node_list:
node = node_list.pop(0)
layer_val.append(node.val)
if node.left: layer_node.append(node.left)
if node.right: layer_node.append(node.right)
if index > 0:
layer_val.reverse()
res.append(layer_val)
node_list.extend(layer_node)
index = -index
return res