首页 > 其他分享 >LeetCode:102.二叉树的层序遍历

LeetCode:102.二叉树的层序遍历

时间:2025-01-12 17:44:55浏览次数:1  
标签:preorder right val 层序 queue 二叉树 102 null left

LeetCode:102.二叉树的层序遍历

解题思路层序遍历顺序就是广度优先遍历。不过在遍历时候需要记录当前节点所处的层级,方便将其添加到不同的数组中。

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number}
 */

function TreeNode(val, left, right) {
    this.val = (val === undefined ? 0 : val);
    this.left = (left === undefined ? null : left);
    this.right = (right === undefined ? null : right);
}

function buildTree(preorder) {
    if (preorder.length === 0) return null;
    
    let root = new TreeNode(preorder[0]);
    let queue = [root];
    let i = 1;
    
    while (i < preorder.length) {
        let currentNode = queue.shift();
        
        if (preorder[i] !== null) {
            currentNode.left = new TreeNode(preorder[i]);
            queue.push(currentNode.left);
        }
        i++;
        
        if (i < preorder.length && preorder[i] !== null) {
            currentNode.right = new TreeNode(preorder[i]);
            queue.push(currentNode.right);
        }
        i++;
    }
    
    return root;
}

var levelOrder = function(root) {
    if(!root) return []
    let queue = [root];
    let len,n
    let result=[]
    while(queue.length) {
       len=queue.length
       result.push([])
        while(len--){
            n=queue.shift()
            result[result.length-1].push(n.val)
            if(n.left)queue.push(n.left)
            if(n.right)queue.push(n.right)
        }
    }
    return result
};

// 构建二叉树
let preorder = [3,9,20,null,null,15,7];
let root = buildTree(preorder);

console.log(levelOrder(root)); 

标签:preorder,right,val,层序,queue,二叉树,102,null,left
From: https://www.cnblogs.com/KooTeam/p/18667114

相关文章

  • LeetCode:111.二叉树的最小深度
    LeetCode:111.二叉树的最小深度解题思路求最小深度,考虑使用广度优先遍历。在广度优先遍历过程中,遇到叶子节点,停止遍历,返回节点层级。解题步骤广度优先遍历整棵树,并记录每个节点的层级。遇到叶子节点,返回节点层级,停止遍历。//dfsvarminDepth=function(root){if(!root......
  • 数据结构与算法之二叉树: LeetCode 108. 将有序数组转换为二叉搜索树 (Ts版)
    将有序数组转换为二叉搜索树https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/描述给你一个整数数组nums,其中元素已经按升序排列请你将其转换为一棵平衡二叉搜索树示例1输入:nums=[-10,-3,0,5,9]输出:[0,-3,9,-10,nul......
  • 数据结构与算法之二叉树: LeetCode 110. 平衡二叉树 (Ts版)
    平衡二叉树https://leetcode.cn/problems/balanced-binary-tree/description/描述给定一个二叉树,判断它是否是平衡二叉树示例1输入:root=[3,9,20,null,null,15,7]输出:true示例2输入:root=[1,2,2,3,3,null,null,4,4]输出:false示例3输入:root=[]输......
  • 数据结构与算法之二叉树: LeetCode 117. 填充每个节点的下一个右侧节点指针 II (Ts版)
    填充每个节点的下一个右侧节点指针IIhttps://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/description/描述给定一个二叉树:structNode{intval;Node*left;Node*right;Node*next;}填充它的每个next指针,让这个指针指向其......
  • 【Java】二叉树:数据海洋中灯塔式结构探秘
    二叉树(BinaryTree)是一种基础且重要的树形数据结构,它是数据存储和操作的基础,广泛应用于各种场景,如数据库索引、图像处理、解析表达式等。在各种树形数据结构中,二叉树就像一座灯塔,引导我们在复杂的数据海洋中高效地进行数据处理。在本篇文章中,我们将深入探讨二叉树的基本......
  • 手戳usb转串口芯片cp2102模块——理论知识
    一、简介 CP2102是一个USB转串行通信接口的芯片,常用于将USB接口转换为常见的串口接口(RS-232、TTL等)。它通常用于嵌入式系统、数据传输以及外设控制等领域。以下内容基于电脑通过cp2102与esp32进行串口通信(比如烧录程序、数据发送与接受)的情景讲述。二、讲述以上......
  • P10200 花神诞日 题解
    P10200[湖北省选模拟2024]花神诞日题解首先注意到一个集合中两两异或和的最小值就是,排序后相邻两个数异或和的最小值。证明可以考虑放到01-Trie上,从高往低位建树,求一个数与之异或的最小值,就是使高位相同位数尽可能多,则就是01-Trie上的前一个叶子或后一个叶子。由此,我们......
  • 洛谷 P1102 A-B 数对(二分写法)
    题目:P1102A-B数对-洛谷|计算机科学教育新生态题目背景出题是一件痛苦的事情!相同的题目看多了也会有审美疲劳,于是我舍弃了大家所熟悉的A+BProblem,改用A-B了哈哈!题目描述给出一串正整数数列以及一个正整数 C,要求计算出所有满足 A−B=C 的数对的个数(不同位置的数......
  • 94. 二叉树的中序遍历
    目录题目递归题目给定一个二叉树的根节点root,返回它的中序遍历。递归varinorderTraversal=function(root){constres=[]//结果数组constinorder=(root)=>{//递归函数if(root===null)return//遇到空(底)返回inorder(root.left)/......
  • 二叉树层序遍历 Leetcode102.二叉树的层序遍历
    二叉树的层序遍历相当于图论的广度优先搜索,用队列来实现(二叉树的递归遍历相当于图论的深度优先搜索)102.二叉树的层序遍历给你二叉树的根节点 root ,返回其节点值的 层序遍历 。(即逐层地,从左到右访问所有节点)。示例1:输入:root=[3,9,20,null,null,15,7]输出:[[3],[......