【数据结构与算法】先序遍历(前序遍历)的非递归实现

回忆一下递归实现

javascript 复制代码
/**
/**
 * 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) {
	var retArr = []
	if (!root) return retArr
	var helpFunc = (r) => {
        if (!r)return 
		retArr.push(r.val)
		if (r.left) { helpFunc(r.left) }
		if (r.right) { helpFunc(r.right)}
	}
	helpFunc(root)
	return retArr
}

用模拟栈来实现

javascript 复制代码
var preorderTraversal = function(root) {
	var retArr = []
	if (!root) return retArr
	var stack = []
	stack.push(root)
	while(stack.length !== 0) {
		var popE = stack.pop()
		retArr.push(popE.val)
		if (popE.right) {
			stack.push(popE.right)
		}
		if (popE.left) {
			stack.push(popE.left)
		}
	}
	return retArr
}
相关推荐
MicroTech20252 分钟前
突破量子数据加载瓶颈,MLGO微算法科技推出面向大规模量子计算的分治态制备技术
科技·算法·量子计算
阿赛工作室3 分钟前
Vue中onBeforeUnmount不触发的解决方案
前端·javascript·vue.js
码王吴彦祖4 分钟前
顶象 AC 纯算法迁移实战:从补环境到纯算的完整拆解
java·前端·算法
SccTsAxR8 分钟前
算法基石:手撕离散化、递归与分治
c++·经验分享·笔记·算法
wuweijianlove9 分钟前
算法测试中的数据规模与时间复杂度匹配的技术4
算法
浩星22 分钟前
electron系列1:Electron不是玩具,为什么桌面应用需要它?
前端·javascript·electron
Q741_14734 分钟前
每日一题 力扣 3655. 区间乘法查询后的异或 II 模拟 分治 乘法差分法 快速幂 C++ 题解
c++·算法·leetcode·模拟·快速幂·分治·差分法
The_Ticker35 分钟前
印度股票实时行情API(低成本方案)
python·websocket·算法·金融·区块链
夏乌_Wx39 分钟前
剑指offer | 2.4数据结构相关题目
数据结构·c++·算法·剑指offer·c/c++
疯笔码良1 小时前
【Vue】自适应布局
javascript·vue.js·css3