当前位置: 首页 > news >正文

二叉树(1):二叉树的前、中、后和层次遍历

二叉树入门级别。

1.二叉树前序遍历

题目144.二叉树的前序遍历

/*** 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[]}*/
var preorderTraversal = function (root) {let ans = [];function dfs(root) {if (root === null) {return;}ans.push(root.val);dfs(root.left);dfs(root.right);}dfs(root);return ans;
};

2.二叉树中序遍历

题目94.二叉树中序遍历

/*** 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[]}*/
var inorderTraversal = function (root) {const ans = [];function dfs(root) {if (!root) {return;}dfs(root.left);ans.push(root.val);dfs(root.right);}dfs(root);return ans;
};

3.二叉树后序遍历

题目145.二叉树的后序遍历

/*** 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[]}*/
var postorderTraversal = function (root) {const ans = [];function dfs(root) {if (!root) {return;}dfs(root.left);dfs(root.right);ans.push(root.val);}dfs(root);return ans;
};

4.二叉树层次遍历

题目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[][]}*/
var levelOrder = function (root) {const answers = [];let cur = [root];while (root && cur.length) {let next = [];let answer = [];for (node of cur) {if (node.left) {next.push(node.left);}if (node.right) {next.push(node.right);}answer.push(node.val);}answers.push(answer);cur = next;}return answers;
};//方法二:单个队列
/*** 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[][]}*/
var levelOrder = function (root) {const answers = [];let queue = [root];while (root && queue.length) {let answer = [];let n = queue.length;let count = 0;while (count !== n) {let node = queue[0];if (node.left) {queue.push(node.left);}if (node.right) {queue.push(node.right);}answer.push(node.val);queue.shift();count++;}answers.push(answer);}return answers;
};

http://www.dtcms.com/a/332408.html

相关文章:

  • 《R for Data Science (2e)》免费中文翻译 (第4章) --- Workflow: code style
  • STM32L051 RTC闹钟配置详解
  • Elasticsearch:使用 Gradio 来创建一个简单的 RAG 应用界面
  • 敏捷数据开发实践:基于 Amazon Q Developer + Remote MCP 构建本地与云端 Amazon Redshift 交互体系
  • 软件重构的破与立:模式方法创新设计与工程实践
  • 【Vibe Coding 工程之 StockAnalyzerPro 记录】- EP1.先写 PRD
  • 集成电路学习:什么是Object Detection目标检测
  • 【算法专题训练】13、回文字符串
  • 另类的pdb恢复方式
  • 逆向练习(六)Andrénalin.3/4
  • Linux应用软件编程---多任务(进程2)(资源回收函数(wait、waitpid)、exec函数族、linux下的命令、const四种位置表示的含义)
  • 一周学会Matplotlib3 Python 数据可视化-绘制树形图
  • Laravel 中解决分表问题
  • ESP32-C3_SMARTCAR
  • 高并发场景下限流算法对比与实践指南
  • 【unity实战】Unity游戏开发:如何用ScriptableObject与序列化多态实现可复用的模块化效果系统?
  • ABP vNext+ WebRTC DataChannel 低延迟传感推送
  • 物联网(IoT)系统中,通信协议如何选择
  • C++——分布式
  • Al大模型-本地私有化部署大模型-大模型微调
  • 图像识别控制技术(Sikuli)深度解析:原理、应用与商业化前景
  • Zabbix【部署 01】Zabbix企业级分布式监控系统部署配置使用实例(在线安装及问题处理)程序安装+数据库初始+前端配置+服务启动+Web登录
  • 後端開發Python篇
  • StarRocks集群部署
  • 从 0 到 1 玩转Claude code(蓝耘UI界面版本):AI 编程助手的服务器部署与实战指南
  • Xget:为您的开发工作流解锁极致速度
  • 清除 pnpm 缓存,解决不同源安装依赖包失败的问题
  • “大模型”技术专栏 | 浅谈基于 Kubernetes 的 LLM 分布式推理框架架构:概览
  • 力扣 hot100 Day74
  • Floyd 判圈算法(龟兔赛跑算法)