news 2026/8/10 9:10:54

力扣二叉树的三种遍历

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣二叉树的三种遍历

这篇文章类比三种遍历的写法,每个遍历利用两种方法,分别是递归和迭代,帮助更好的学习二叉树的相关知识。

一、前序

两种方法:

1.递归

/** * 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) { const res = []; const preorder = (node) => { if(node === null) return; //先搜集根节点 res.push(node.val); //递归遍历左子树 preorder(node.left); //递归遍历右子树 preorder(node.right) } preorder(root); return res; };

2.迭代

/** * 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) { const res = []; // 存储遍历结果 const stk = []; // 模拟递归的栈 // 循环条件和中序/后序一致:当前节点非空 或 栈非空 while (root || stk.length) { while (root) { res.push(root.val); stk.push(root); root = root.left; } root = stk.pop(); root = root.right; } return res; };

二、中序

两种方法:

1.递归

/** * 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 res = []; const inorder = (node) => { if (node === null) return; // 先递归遍历左子树 inorder(node.left); // 收集当前节点值 res.push(node.val); // 再递归遍历右子树 inorder(node.right); }; inorder(root); return res; };

2.迭代

var inorderTraversal = function(root) { const res = []; const stk = []; while (root || stk.length) { while (root) { stk.push(root); root = root.left; } root = stk.pop(); res.push(root.val); root = root.right; } return res; };

三、后序

两种方法:

1.递归

/** * 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 res = []; const postorder = (node) => { if(node === null) return; //递归遍历左子树 postorder(node.left); //递归遍历右子树 postorder(node.right); //先搜集根节点 res.push(node.val); } postorder(root); return res; };

2.迭代

var postorderTraversal = function(root) { const res = []; const stk = []; let prev = null; while (root || stk.length) { while (root) { stk.push(root); root = root.left; } root = stk.pop(); if (!root.right || root.right === prev) { res.push(root.val); prev = root; root = null; } else { stk.push(root); root = root.right; } } return res; };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/10 7:15:02

CIPURSE协议深度分析:公共交通卡安全机制与研究方法探讨

CIPURSE协议深度分析:公共交通卡安全机制与研究方法探讨 【免费下载链接】proxmark3 Iceman Fork - Proxmark3 项目地址: https://gitcode.com/GitHub_Trending/pr/proxmark3 还在为复杂的公共交通卡安全机制而困惑?面对CIPURSE协议的层层加密感到…

作者头像 李华
网站建设 2026/8/8 7:01:54

Sqlserver查询java程序执行超慢sql直接在数据库工具里执行很快

今天记录一个比较隐晦不好排查的问题,写了个查询功能, 结果用户反馈在页面点查询得5 -6分钟才能出来,执行的过程中把数据库执行的sql取出来,字段替换掉在数据库直接执行很快不到1秒,结果在解决的过程中1.尝试的给sql的…

作者头像 李华
网站建设 2026/8/10 7:17:01

Hot100题4--相交链表

暴力法。这段代码用于找到两个链表的相交节点,使用双重循环遍历两个链表,外层循环遍历链表A的每个节点,内层循环遍历链表B的每个节点,比较节点引用是否相同(不是值相同),如果找到相同引用则返回…

作者头像 李华
网站建设 2026/8/10 2:02:32

【硬核深扒】彻底搞懂以太坊账户抽象(ERC-4337):告别助记词,Web3大规模落地的最后一块拼图 (为什么V神都在推?一文讲透“智能合约钱包”背后的技术原理与未来)

1. 背景:为什么现在的钱包这么难用? 现状: 助记词丢失即资产清零、Gas费必须用ETH支付、无法实现社交恢复。 观点: 只要用户还需要管理私钥,Web3 就永远无法在大众中普及。 引入: 账户抽象(Ac…

作者头像 李华
网站建设 2026/8/8 7:23:40

揭秘程序员的核心能力:为什么说技术架构只是冰山一角?深度解析程序员的真正竞争力!

简介 在AI技术快速发展的今天,程序员的职业定位正发生根本转变。AI已超越大多数程序员的技术能力,未来程序员的核心竞争力将从纯技术转向软能力(深度思考、人际连接、持续学习)、商业价值创造能力以及强大的内在驱动力。程序员需要…

作者头像 李华
网站建设 2026/8/6 15:07:13

算一算你盘中餐的“碳足迹”:这款工具如何让环保从餐桌开始?

你是否想过,我们日常的一餐饭,除了满足味蕾之外,还会对环境产生怎样的影响?食物从生产、加工到运输,每一个环节都可能留下碳排放的痕迹。如今,一款名为“膳食碳足迹计算器”的在线工具,正以直观…

作者头像 李华