二叉树的层次遍历(从上到下,从左到右打印二叉树):
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
# 思路:
# 先从根节点开始,把根节点放入临时节点list中,同时把根节点的val值放入要打印的ret列表中
# 把该根节点的左节点、右节点加入到临时节点list中
# 整个过程遍历临时节点list,每遍历了一个节点,便将其从临时节点list中移去
class Solution:
# 返回从上到下每个节点值列表,例:[1,2,3]
def PrintFromTopToBottom(self, root):
if root == None:
return []
nodeList = [root]
ret = []
while nodeList:
tmpNode = nodeList[0]
ret.append(tmpNode.val) # 将遍历到的节点值放入ret结果中
if tmpNode.left: # 将所遍历节点的左右节点放入到nodeList中
nodeList.append(tmpNode.left)
if tmpNode.right:
nodeList.append(tmpNode.right)
del nodeList[0] # 删除已经遍历过的节点
return ret