剑指offerQ22 从上往下打印二叉树

题目描述

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

以 下为例:
8
/ \
6 10
/ \ / \
5 7 9 11

从上到下打印节点: 8 6 10 5 7 9 11
打印8节点 存储6 10节点
打印6节点 存储10 5 7 节点
打印10节点 存储5 7 9 11 节点
打印5 节点 存储7 9 11节点
打印 7节点 存储9 11 节点
打印9节点 存储11节点
打印11节点 over

参考大神(行走的小百科)提交的代码:
来源:https://www.nowcoder.com/profile/3578330/codeBookDetail?submissionId=10213911

class Solution:
    # 返回从上到下每个节点值列表,例:[1,2,3]
    def PrintFromTopToBottom(self, root):
        # write code here
        if not root :
            return []
        res = []
        stack = [root] # stack= [8] 添加第一个节点
        while len(stack):
            t = stack.pop(0) #返回第一个元素
            res.append(t.val)
            if t.left:
                stack.append(t.left)
            if t.right:
                stack.append(t.right)
        return res

python 列表的pop

pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
list.pop(index=-1)

参数
obj – 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。
返回值
该方法返回从列表中移除的元素对象。

#!/usr/bin/python3
#coding=utf-8
 
list1 = ['Google', 'Runoob', 'Taobao']
list_pop=list1.pop(1)
print "删除的项为 :", list_pop   # Runoob
print "列表现在为 : ", list1 # ['Google', 'Taobao']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值