leetcode(41)-二叉树的层序遍历

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。

https://leetcode-cn.com/problems/binary-tree-level-order-traversal/

class Solution:
    def levelOrder(self, root: TreeNode):
        stack_ =[]
        if root  is None:
            return []
        stack_.append(root)
        ans = []
        while len(stack_)>0:
            tmp_ans = []
            new_stack = []
            for each in stack_:
                #print(each,each is None)
                tmp_ans.append(each.val)
               
                if each.left is not None:
                    new_stack.append(each.left) 
                if each.right is not None:
                    new_stack.append(each.right)
            if len(tmp_ans)>0:ans.append(tmp_ans)
            stack_ = new_stack

        return ans
class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        """ 双层迭代 """
        if not root: return [] # 特判

        cur_level, next_level = [root], [] # 当前层结点以及下一层结点 
        res = [[i.val for i in cur_level]] # 遍历当前层

        while cur_level or next_level:
            for node in cur_level:
                if node.left: next_level.append(node.left)
                if node.right: next_level.append(node.right)
            if next_level: res.append([i.val for i in next_level])
            cur_level, next_level = next_level, [] # 更新当前层以及下一层

        return res

posted @ 2020-09-22 15:55  木子士心王大可  阅读(106)  评论(0)    收藏  举报