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

浙公网安备 33010602011771号