劍指offer【32-3】:之字形逐層打印層序遍歷每層結果

題目:

 

思路+代碼:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章