(树) 剑指 Offer 32 - I. 从上到下打印二叉树 ——【Leetcode每日一题】

这篇具有很好参考价值的文章主要介绍了(树) 剑指 Offer 32 - I. 从上到下打印二叉树 ——【Leetcode每日一题】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

❓剑指 Offer 32 - I. 从上到下打印二叉树

难度:中等

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

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

    3
   / \
  9  20
    /  \
   15   7

返回:

[3,9,20,15,7]

提示

  • 节点总数 <= 100

💡思路:BFS

  • 使用优先队列进行层序遍历即可!

🍁代码:(C++、Java)

C++

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<int> levelOrder(TreeNode* root) {
        vector<int> ans;
        if(root == nullptr) return ans;
        queue<TreeNode*> q;
        q.push(root);
        while(!q.empty()){
            TreeNode* temp = q.front();
            q.pop();
            ans.push_back(temp->val);
            if(temp->left != nullptr) q.push(temp->left);
            if(temp->right != nullptr) q.push(temp->right);
        }
        return ans;
    }
};

Java

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int[] levelOrder(TreeNode root) {
        ArrayList<Integer> ans = new ArrayList<>();
        if(root == null) return new int[0];
        Queue<TreeNode> q = new LinkedList<>();
        q.add(root);
        while(!q.isEmpty()){
            TreeNode temp = q.poll();
            ans.add(temp.val);
            if(temp.left != null) q.add(temp.left);
            if(temp.right != null) q.add(temp.right);
        }
        int[] ret = new int[ans.size()];
        for(int i = 0; i < ans.size(); i++){
            ret[i] = ans.get(i);
        }
        return ret;
    }
}
🚀 运行结果:

(树) 剑指 Offer 32 - I. 从上到下打印二叉树 ——【Leetcode每日一题】,LeetCode,leetcode,算法,职场和发展

🕔 复杂度分析:
  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为根为 root 的节点数。
  • 空间复杂度 O ( n ) O(n) O(n)

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!文章来源地址https://www.toymoban.com/news/detail-621607.html

注: 如有不足,欢迎指正!

到了这里,关于(树) 剑指 Offer 32 - I. 从上到下打印二叉树 ——【Leetcode每日一题】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 力扣256.翻转二叉树(递归/qBFS) 剑指offer 32 从上到下打印二叉树(q BFS)I II III(三道题)

    采用队列 采用递归 第一个需要考虑的问题是 二维数组怎样在不知道行和列的情况下进行插入 :先定义一维数组,然后将一维数组插入二维数组! 第二个需要考虑的问题是 BFS中队列进行遍历每一层的时候既需要把当前结点的左右孩子结点存到队列里,同时当前层结束后 原来

    2024年02月16日
    浏览(42)
  • LeetCode——从上到下打印二叉树 II

    题目来源 剑指 Offer 32 - II. 从上到下打印二叉树 II - 力扣(LeetCode) 题目 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 示例 给定二叉树:[3,9,20,null,null,15,7] 返回其层次遍历结果:  解析: 该题是二叉树层次遍历的另一种形式,要想做

    2024年02月11日
    浏览(37)
  • JZ32 从上往下打印二叉树(Java)

    题目地址:从上往下打印二叉树_牛客题霸_牛客网 题目回顾: 不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印,跳过),请你将打印的结果存放到一个数组里面,返回。 解

    2024年02月13日
    浏览(37)
  • KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(13)

    接前一篇文章:KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(12) 上一回补讲了drivers/gpu/drm/drm_framebuffer.c中的framebuffer_check函数中for (i = 0; i info-num_planes; i++)中的第4个赋值语句,本回继续接着KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(11)中的工作,在前两个参数检

    2024年02月06日
    浏览(32)
  • 【ArcGIS Pro二次开发】(46):要素类从上到下、从左到右排序

    要素类经过编辑之后,【OBJECTID】字段会变得不规律。应部分网友要求,做了这个从上到下、从左到右排序的工具。 不过后来在ArcGIS Pro中发现了一个【排序】工具,已经可以完美实现这个功能需求,发现自己做了个白工。   不过做了不能白做,而且和【排序】工具相比还是

    2024年02月17日
    浏览(46)
  • 剑指offer27.二叉树的镜像

    这道题很简单,写了十多分钟就写出来了,一看题目就知道这道题肯定要用递归。先交换左孩子和右孩子,再用递归交换左孩子的左孩子和右孩子,交换右孩子的左孩子和右孩子,其中做一下空判断就行。以下是我的代码: 看了一下题解大多数用的递归,还有用辅助栈的。

    2024年02月12日
    浏览(46)
  • 剑指offer面试题6 重建二叉树

    分析 本题目输入的一个树的前序和中序遍历序列,要求把这颗树重建起来。这里需要了解到程序中有个特别重要的思维叫递归,递归是分层的,每一层的问题都是一样的,只不过问题的规模不一样,面对这类复杂问题你的思考方式一定是2点:1.问题该如何定义?第n层该如何

    2024年01月18日
    浏览(42)
  • 剑指offer:关于二叉树的汇总(c++)

    1、重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 2、树的子结构: 输入两棵二叉树A和B,

    2023年04月12日
    浏览(49)
  • Leetcode-每日一题【剑指 Offer 27. 二叉树的镜像】

    请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入:      4    /     2     7  /   / 1   3 6   9 镜像输出:      4    /     7     2  /   / 9   6 3   1 示例 1: 输入: root = [4,2,7,1,3,6,9] 输出: [4,7,2,9,6,3,1] 限制: 0 = 节点个数 = 1000 1.题目要求我们设

    2024年02月13日
    浏览(41)
  • 剑指 Offer 14- I. 剪绳子

    剑指 Offer 14- I. 剪绳子 难度: m i d d l e color{orange}{middle} mi dd l e 题目描述 给你一根长度为 n n n 的绳子,请把绳子剪成整数长度的 m m m 段(m、n都是整数,n1并且m1),每段绳子的长度记为 k [ 0 ] , k [ 1 ] . . . k [ m − 1 ] k[0],k[1]...k[m-1] k [ 0 ] , k [ 1 ] ... k [ m − 1 ] 。请问 k [ 0 ] ∗

    2023年04月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包