剑指offer-从上往下打印二叉树
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: # 返回从上到下每个节点值列表,例:[1,2,3] def PrintFromTopToBottom(self, root): # write code here if not root: return [] rootList = [] # 节点列表 rootList.append(root) numList = [] # 节点值列表 numList.append(root.val) for i in rootList: if i.left: rootList.append(i.left) numList.append(i.left.val) if i.right: rootList.append(i.right) numList.append(i.right.val) return numList
思路是,依次将根节点,左孩子,有孩子放入列表中,然后放入左孩子的左孩子,右孩子;右孩子的左孩子,右孩子.......和人脑读取的顺序是一样的。