剑指offer 二叉树的层序遍历
剑指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 二叉树的层序遍历的更多相关文章
- 剑指Offer21 二叉树的层序遍历
/************************************************************************* > File Name: 21_PrintT ...
- 剑指Offer——二叉树
剑指Offer--二叉树 前言 数据结构通常是编程面试中考察的重点.在参加面试之前,应聘者需要熟练掌握链表.树.栈.队列和哈希表等数据结构,以及它们的操作.本片博文主要讲解二叉树操作的相关知识,主要包 ...
- JS数据结构与算法 - 剑指offer二叉树算法题汇总
❗❗ 必看经验 在博主刷题期间,基本上是碰到一道二叉树就不会碰到一道就不会,有时候一个下午都在搞一道题,看别人解题思路就算能看懂,自己写就呵呵了.一气之下不刷了,改而先去把二叉树的基础算法给搞搞懂,然 ...
- 剑指offer 二叉树中和为某一个值的路径
剑指offer 牛客网 二叉树中和为某一个值的路径 # -*- coding: utf-8 -*- """ Created on Tue Apr 9 15:53:58 2 ...
- 剑指offer 二叉树的后序遍历序列
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 思路:这题目有点特殊,主要在于序列为空的时候,不是 ...
- 剑指offer——二叉树的镜像
题目:操作给定的二叉树,将其变换为源二叉树的镜像. 思路:前序(根左右的顺序)遍历一棵树,在存储的时候将其左右树进行交换,最后按照处理后的树还原,即得到其镜像. /** public class Tr ...
- 《剑指offer》-中序遍历下一个节点
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. /* struct TreeLinkNode { in ...
- 剑指Offer——二叉树的下一个结点
题目描述: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 分析: 如果该结点存在右子树,那么返回右子树的最左结 ...
- 剑指Offer——二叉树中和为某一值的路径
题目描述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 分析: 先序遍历二叉树,找到二叉树中结点值的和 ...
随机推荐
- python之list+字典练习
d = { '春波':{ "car":{'BMW':5,'BENZ':3,'audi':3,'byd':4}, "house":["北京", ...
- jmeter负载机运行/添加压力机/分布式
• 我们在压测的时候,可能并发比较大, 一台机子已经启动不了那么多并发了,这个时候我们就要使用多台机子一起来发压力,就要添加压力机,添加压力机怎么添加呢,首先要在做压力机的机子上启动jmeter的代理 ...
- jq的load
1.用于监听加载是否完成 当指定的元素(及子元素)已加载时,会发生 load() 事件. 该事件适用于任何带有 URL 的元素(比如图像.脚本.框架.内联框架). 根据不同的浏览器(Firefox 和 ...
- 用FileZilla链接Linux服务器
这里以CentOS举例 用SSH文件传输端口,默认为22端口,用netstat -antulp | grep ssh命令查看!
- 《一头扎进SpringMvc视频教程》Rest风格的资源URL
5.@PathVariable和@RequestParam的区别 请求路径上有个id的变量值,可以通过@PathVariable来获取 @RequestMapping(value = "/ ...
- Javascript - ExtJs - 事件
事件(ExtJs Event) Ext.Util.observable类 Ext.Util.observable是一个接口,为Ext组件的事件提供了支持,组件的事件不同于传统事件,所以需要有这么一套 ...
- 深入理解JVM - 1 - Java内存区域划分
作者:梦工厂链接:https://www.jianshu.com/p/7ebbe102c1ae来源:简书简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处. Java与C++之间有一堵 ...
- ProtonMiner挖矿蠕虫
特征 ProtonMail邮箱地址 利用漏洞 服务 漏洞 Hadoop 未授权访问 Drupal CVE-2018-7600 Redis 未授权访问 Spring Data Commons CVE-2 ...
- Windows PowerShell 入門(2)-基本操作編 2
前回に引き続きMicrosoftが提供している新しいシェル.Windows Power Shellの基本操作方法を学びます.基本操作編第2弾の今回は.パイプの使用方法を中心としたコマンドレットの操作方 ...
- 增加一台web机注意事项
2017年4月18日 15:23:57 星期二 增加一台web机时, 先不要挂载进lb 1. 需要将此机器的ip加入到其它服务的白名单内: 数据库, 缓存, 第三方接口等 2. 绑定hosts, 点点 ...