kubeflow 微信小程序教程 android教程 image plugins architecture jestjs gdb Skeljs Validator vue教程入门 vue前端开发 十大erp系统 php项目实战 jquery获取下一个元素 bentley软件介绍 bitlocker加密好慢 pcie转sata kubernetes官网 python安装配置 python环境变量 python自学入门 python读取本地文件 java时间类型 java中scanner用法 java字符串函数 linux基础教程 战地女记者 python入门经典 键盘宏软件 防沉迷助手 迅雷免费会员号共享 max电池容量 java游戏编程 视频相册制作软件 spss22安装教程 办公室复印机使用方法 polyworks 超过响应缓冲区限制 cdlinux教程
当前位置: 首页 > 学习教程  > 编程语言

JavaScript / TypeScript for LeetCode (148)

2020/10/8 19:21:26 文章标签:

是差点运气,可我一直在努力! 当前进程: 开始时间:2020.6.27结束时间:undefined GitHub仓库:https://github.com/Cundefined/JavaScript-or-TypeScript-for-LeetCode 1、题目要求 ( 剑指 Offer 32 - I …

是差点运气,可我一直在努力!

当前进程:

  • 开始时间:2020.6.27
  • 结束时间:undefined

GitHub仓库:https://github.com/Cundefined/JavaScript-or-TypeScript-for-LeetCode

1、题目要求

( 剑指 Offer 32 - I ) 从上到下打印二叉树

2、解题思路

方法:广度优先搜索

注意:维护一个队列!!
标准的BFS模板

2.1、JavaScript Solution

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var levelOrder = function (root) {
  const res = [];
  if (root === null) {
    return res;
  }

  //创建队列
  const queue = [];

  queue.push(root);

  //逐层遍历树
  while (queue.length !== 0) {
    //遍历当前层的所有节点
    for (let i = 0; i < queue.length; i++) {
      //出队,拿出待处理的节点
      let currNode = queue.shift();
      //把当前节点加入结果
      res.push(currNode.val);
      //当前节点的所有子节点(下一层节点)全部入队
      currNode.left && queue.push(currNode.left);
      currNode.right && queue.push(currNode.right);
    }
  }

  return res;
};

2.2、TypeScript Solution

/**
 * Definition for a binary tree node.
 * class TreeNode {
 *     val: number
 *     left: TreeNode | null
 *     right: TreeNode | null
 *     constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.left = (left===undefined ? null : left)
 *         this.right = (right===undefined ? null : right)
 *     }
 * }
 */

function levelOrder(root: TreeNode | null): number[] {
  const res: number[] = new Array<number>();
  if (root === null) {
    return res;
  }

  //创建队列
  const queue: Array<TreeNode | null> = new Array<TreeNode | null>();

  queue.push(root);

  //逐层遍历树
  while (queue.length !== 0) {
    //遍历当前层的所有节点
    for (let i: number = 0; i < queue.length; i++) {
      //出队,拿出待处理的节点
      let currNode = queue.shift();
      //把当前节点加入结果
      currNode && res.push(currNode.val);
      //当前节点的所有子节点(下一层节点)全部入队
      currNode && currNode.left && queue.push(currNode.left);
      currNode && currNode.right && queue.push(currNode.right);
    }
  }

  return res;
}


本文链接: http://www.dtmao.cc/news_show_250141.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?