剑指offer 牛客网 二叉树的层序遍历

# -*- coding: utf-8 -*-
"""
Created on Tue Apr 9 09:33:16 2019 @author: Administrator
层序遍历:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
1
/ \
2 3
/ \ / \
4 5 6 7
返回列表:[1,2,3,4,5,6,7]
""" # -*- coding:utf-8 -*-
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
#层序遍历
def PrintFromTopToBottom(self, root):
# write code here
res,result = [],[]
if root: #非空节点,若空直接返回空
res.append(root) #先将头结点加入其中
i = 0
while True:
if res[i].left: #如果左节点非空将其加入
res.append(res[i].left)
if res[i].right: #同理,右节点非空将其加入
res.append(res[i].right)
i += 1
if i == len(res): #退出条件是当遍历到列表的长度时候退出
break
for i in res: #将节点的值加入到列表返回
if i: #返回非空节点的值
result.append(i.val)
return result if __name__ == '__main__':
solution = Solution()
node_left = TreeNode(4)
node_right = TreeNode(5)
root_left = TreeNode(2)
root_left.left = node_left
root_left.right = node_right node_left = TreeNode(6)
node_right = TreeNode(7)
root_right = TreeNode(3)
root_right.left = node_left
root_right.right = node_right root = TreeNode(1)
root.left = root_left
root.right = root_right res = solution.PrintFromTopToBottom(root)
print(res)

剑指offer 二叉树的层序遍历的更多相关文章

  1. 剑指Offer21 二叉树的层序遍历

    /************************************************************************* > File Name: 21_PrintT ...

  2. 剑指Offer——二叉树

    剑指Offer--二叉树 前言 数据结构通常是编程面试中考察的重点.在参加面试之前,应聘者需要熟练掌握链表.树.栈.队列和哈希表等数据结构,以及它们的操作.本片博文主要讲解二叉树操作的相关知识,主要包 ...

  3. JS数据结构与算法 - 剑指offer二叉树算法题汇总

    ❗❗ 必看经验 在博主刷题期间,基本上是碰到一道二叉树就不会碰到一道就不会,有时候一个下午都在搞一道题,看别人解题思路就算能看懂,自己写就呵呵了.一气之下不刷了,改而先去把二叉树的基础算法给搞搞懂,然 ...

  4. 剑指offer 二叉树中和为某一个值的路径

    剑指offer 牛客网 二叉树中和为某一个值的路径 # -*- coding: utf-8 -*- """ Created on Tue Apr 9 15:53:58 2 ...

  5. 剑指offer 二叉树的后序遍历序列

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 思路:这题目有点特殊,主要在于序列为空的时候,不是 ...

  6. 剑指offer——二叉树的镜像

    题目:操作给定的二叉树,将其变换为源二叉树的镜像. 思路:前序(根左右的顺序)遍历一棵树,在存储的时候将其左右树进行交换,最后按照处理后的树还原,即得到其镜像. /** public class Tr ...

  7. 《剑指offer》-中序遍历下一个节点

    题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. /* struct TreeLinkNode { in ...

  8. 剑指Offer——二叉树的下一个结点

    题目描述: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 分析: 如果该结点存在右子树,那么返回右子树的最左结 ...

  9. 剑指Offer——二叉树中和为某一值的路径

    题目描述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 分析: 先序遍历二叉树,找到二叉树中结点值的和 ...

随机推荐

  1. python之接口开发基础知识

    一.开发接口的作用 1.mock 服务:在别的接口没有开发完成的时候可以模拟一些接口以便测试已经开发完成的接口,例如假的支付接口,模拟支付成功.支付失败. 2.了解接口是如何实现的:数据交互.数据返回 ...

  2. Got error 28 from storage engine 解决方法

    早上一来,jira点击任何页面都会报错,首先查看服务器的日志 然后服务器首先看了磁盘,果不其然,是根目录的磁盘满了, 然后就一层一层找占用最大的文件 命令: cd /usr du -sh * 找到了文 ...

  3. Nginx系列6:对称加密与非对称加密各自的应用场景

    强推:推荐一篇通俗易懂的对称加密和非对称加密的文章:https://segmentfault.com/a/1190000004461428 推荐一篇文章:对称加密算法与非对称加密算法的优缺点:http ...

  4. FLASK-----基本知识(一)

    中文文档(http://docs.jinkan.org/docs/flask/) 英文文档(http://flask.pocoo.org/docs/0.11/) FLASK介绍 Flask是一个基于P ...

  5. listView从底部回到顶部代码实现

    可用如下方法: 1.平滑的回到顶部,但是会划过中间的每一页 mListView.getRefreshableView().smoothScrollToPosition(0); 2.直接跳到顶部 if ...

  6. LINQ Except “引用类型” 用法

    值类型的比较Except 直接就比了 正经集合类型的如下 var resultExcept = Expert_ItemSource.Except(Invert_ItemSource, new MyCo ...

  7. MySQL软件基本管理

    1. 忘记密码 windows平台下,5.6.43版本mysql # 关闭mysql # 在cmd中执行:mysqld --skip-grant-tables # 在cmd中执行:mysql # 执行 ...

  8. requests库入门07-patch请求

    使用data参数提交 设置邮件能见度,这个接口用来设置邮件是公共可见,还是私有的 import requests test_url = 'https://api.github.com' def get ...

  9. Boost多线程编程

    Boost多线程编程   背景 •       今天互联网应用服务程序普遍使用多线程来提高与多客户链接时的效率:为了达到最大的吞吐量,事务服务器在单独的线程上运行服务程序: GUI应用程序将那些费时, ...

  10. 链接器link.exe 编译器cl.exe 资源编译器rc.exe

    原文地址:https://blog.csdn.net/biggbang/article/details/24433065 1.cl.exe文件是Visual C\C++的编译器,它将程序源代码文件编译 ...