广度优先遍历_LeetCode | 广度优先遍历

b797306a7e2ad8d3278cae58a1cc2bab.png

阅读本文大约需要 4 分钟

概述

  • 前言

  • 429 N 叉树的层次遍历 90.36%

  • 102 二叉树的层次遍历 99.76%

  • 后记

前言

不管经济多不好,提高自身硬实力才是关键。本文由一个骚包程序猿zone7撰写,欢迎关注。

429 N 叉树的层次遍历 90.36%

给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。

例如,给定一个 3叉树 :

7c221db3cee4846d0328d8cb083e5ba5.png

返回其层序遍历:

[
     [1],
     [3,2,4],
     [5,6]
]

说明:

  1. 树的深度不会超过 1000

  2. 树的节点总数不会超过 5000

思路

如果你有读我前面的文章就知道,其实这个就是二叉树层次遍历的一个变形。

for child in current.children:    
                    que.append(child);

用这句代码替换了左右子树加入队列。

解答

# 运行效率:90.36%
"""
# Definition for a Node.
class Node(object):
    def __init__(self, val, children):
        self.val = val
        self.children = children
"""
class Solution(object):

    def levelOrder(self, root):
        """
        :type root: Node
        :rtype: List[List[int]]
        """
        if not root:
            return [];
        que = [];    
        res = [];    
        que.append(root);    
        while len(que):     
            l = len(que);
            sub = [];        
            for i in range(l):
                current = que.pop(0);    
                sub.append(current.val);
                for child in current.children:    
                    que.append(child);
            res.append(sub);    
        return res;

102 二叉树的层次遍历 99.76%

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

例如:
给定二叉树: [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回其层次遍历结果:

[
  [3],
  [9,20],
  [15,7]
]

思路

嗯,这就是上篇文章《python 实现二叉树的深度&&广度优先的遍历》中的层次遍历代码。不用解释太多了。

解答

# 运行效率:99.76%
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def levelOrder(self, root):
        if not root:
            return []
        ret = []
        ret.append(root)
        ret2 = []
        while len(ret) != 0:
            temp = []
            length = len(ret)
            for index in range(length):
                tempValue = ret.pop(0)
                temp.append(tempValue.val)
                if tempValue.left is not None:
                    ret.append(tempValue.left)
                if tempValue.right is not None:
                    ret.append(tempValue.right)
            ret2.append(temp)
        return ret2

后记

今天的题就到这里了,如果你有什么好刷题的建议可以留言或者后台私信给我,我会分享给大家。

往期推荐:

python 实现二叉树的深度 & 广度优先遍历

c50ecb0c858a7f395e5bc7e4db89ed70.png

欢迎关注这个骚包程序猿?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1958. 检查操作是否合法(模拟)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的 8 x 8 网格 board ,其中 board[r][c] 表示游戏棋盘上的格子 (r, c) 。 棋盘上空格用 . 表示,白色格子用 W 表示,黑色格子用 B 表示。 游戏中每次操作步骤为:选择一个空格…

php获取周几,php怎么获得星期几

php怎么获得星期几2021-03-07 15:06:02php获得星期几的方法:首先创建一个PHP示例文件;然后定义一个数组;最后通过“echo "星期".$weekarray[date("w")];”方式获得星期几即可。本文操作环境:Windows7系统、PH…

电脑假死卡的动不了_最近遇到奇怪电脑问题(实战篇)

点击蓝字关注我们话不多扯,说事最近遇到奇怪电脑问题装的是7系统32位开机可以进入系统插着网线开机,就假死拔掉网线开机,正常,然后插上网线依旧正常再带着网线关机,开机后又成假死假死后拔下网线依旧恢复不了必须是不插…

LeetCode 1961. 检查字符串是否为数组前缀

文章目录1. 题目2. 解题1. 题目 给你一个字符串 s 和一个字符串数组 words ,请你判断 s 是否为 words 的 前缀字符串 。 字符串 s 要成为 words 的 前缀字符串 ,需要满足:s 可以由 words 中的前 k(k 为 正数 )个字符…

ios UIScrollView 基础属性

转 UIScrollView 原理 在滚动过程当中,其实是在修改原点坐标。当手指触摸后, scroll view会暂时拦截触摸事件,使用一个计时器。假如在计时器到点后没有发生手指移动事件,那么 scroll view 发送 tracking events 到被点击的 subview。假如在计时器到点前发…

LeetCode 1962. 移除石子使总数最小(优先队列)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 piles ,数组 下标从 0 开始 ,其中 piles[i] 表示第 i 堆石子中的石子数量。 另给你一个整数 k ,请你执行下述操作 恰好 k 次: 选出任一石子堆 piles[i] ,并从中 移除…

ubuntu自定义安装里怎么选_中央空调到底应该怎么选?小户型也能安装中央空调?行家说实话了...

▲ 点击蓝字“建通舒适家”,你想知道的空调问题,答案全在这里啦!中央空调到底应该怎么选?小户型也能安装中央空调?行家说实话了现在业主装修大多都是对中央控空调一知半解,出现很多种的情况就是&#xff1a…

三角形css_纯 CSS 实现绘制各种三角形(各种角度)

一、前言三角形实现原理:宽度width为0;height为0;(1)有一条横竖边(上下左右)的设置为border-方向:长度 solid red,这个画的就是底部的直线。其他边使用border-方向&#…

LeetCode 1826. 有缺陷的传感器(枚举)

文章目录1. 题目2. 解题1. 题目 实验室里正在进行一项实验。为了确保数据的准确性,同时使用 两个 传感器来采集数据。 您将获得2个数组 sensor1 and sensor2,其中 sensor1[i] 和 sensor2[i] 分别是两个传感器对第 i 个数据点采集到的数据。 但是&#…

今天携程出事了:让我们来学习下http的响应码

就在今天,2015年5月28日,中国最大的旅游机票预订网站--携程网粗大事了。据传携程网的数据库被人物理删除了,而容灾备份的数据又无法正常使用,服务器全面遭受瘫痪。每小时给携程带来的损失约100万美元。巴拉巴拉,作为中…

LeetCode 1708. 长度为 K 的最大子数组

文章目录1. 题目2. 解题1. 题目 在数组 A 和数组 B 中,对于第一个满足 A[i] ! B[i] 的索引 i ,当 A[i] > B[i] 时,数组 A 大于数组 B。 例如,对于索引从 0 开始的数组: [1,3,2,4] > [1,2,2,4] ,因…

LeetCode 1554. 只有一个不同字符的字符串(枚举)

文章目录1. 题目2. 解题1. 题目 给定一个字符串列表 dict ,其中所有字符串的长度都相同。 当存在两个字符串在相同索引处只有一个字符不同时,返回 True ,否则返回 False 。 进阶:你可以以 O(n*m) 的复杂度解决问题吗&#xff1…

slice 转byte go_一文告诉你神奇的Go内建函数源码在哪里

Go内建函数源码,我好像在哪里见过你。 - 佚名1. 何为Go内建函数众所周知,Go是最简单的主流编程语言之一,截至Go 1.15版本,Go语言的关键字的规模依旧保持在25个:很多刚入门的gopher可能会问:像bool、byte、e…

LeetCode 1586. 二叉搜索树迭代器 II(数组+栈)

文章目录1. 题目2. 解题1. 题目 实现二叉搜索树(BST)的中序遍历迭代器 BSTIterator 类: BSTIterator(TreeNode root) 初始化 BSTIterator 类的实例。 二叉搜索树的根节点 root 作为构造函数的参数传入。 内部指针使用一个不存在于树中且小于…

LeetCode 1570. 两个稀疏向量的点积(哈希)

文章目录1. 题目2. 解题1. 题目 给定两个稀疏向量,计算它们的点积(数量积)。 实现类 SparseVector: SparseVector(nums) 以向量 nums 初始化对象。dotProduct(vec) 计算此向量与 vec 的点积。 稀疏向量 是指绝大多数分量为 0 …

LeetCode 1644. 二叉树的最近公共祖先 II

文章目录1. 题目2. 解题1. 题目 给定一棵二叉树的根节点 root,返回给定节点 p 和 q 的最近公共祖先(LCA)节点。 如果 p 或 q 之一不存在于该二叉树中,返回 null。 树中的每个节点值都是互不相同的。 根据维基百科中对最近公共祖…

这就是搜索引擎--读书笔记五--索引的建立与更新

索引的建立和更新 索引的建立 前一总结里说到,如果索引结构建立好了,可以提高搜索的速度,那么给定一个文档集合,索引是如何建立起来的呢?建立索引的方式有很多种,在这里我就书中提到的三种方法简单总结一下…

LeetCode 1650. 二叉树的最近公共祖先 III(哈希)

文章目录1. 题目2. 解题1. 题目 给定一棵二叉树中的两个节点 p 和 q,返回它们的最近公共祖先节点(LCA)。 每个节点都包含其父节点的引用(指针)。Node 的定义如下: class Node {public int val;public No…

PHP方向+go+rpc+swoole,瞅瞅 PHP+Swoole 作为网络通信框架

这里瞅瞅Swoole框架,因为说的比较屌,官网里面文档比较多https://www.swoole.com/代码地址(https://gitee.com/swoole/swoole)这里先复制他的说明(https://wiki.swoole.com/)Swoole底层内置了异步非阻塞、多线程的网络IO服务器。PHP程序员仅需处理事件回调…

如何准备考试

最近准备International Requirement Engeering Board 考试,但凡上点年纪对记忆就不行了,时间也不够,就想着怎么偷懒。 因此,就把测试题做了一遍,然后分析各个章节的分值比重及自己容易错的地方的比重。然后有的放矢再去…