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

回忆一下递归实现

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
}
相关推荐
zy happy43 分钟前
若依 vue3 报错:找不到模块“@/api/xxxx/xxxxx”或其相应的类型声明。。Vue 3 can not find mod
前端·javascript·vue.js
mit6.82444 分钟前
bfs|栈
算法
meichaoWen1 小时前
【Vue3】vue3的全面学习(一)
前端·javascript·学习
CoderYanger2 小时前
优选算法-栈:67.基本计算器Ⅱ
java·开发语言·算法·leetcode·职场和发展·1024程序员节
jllllyuz2 小时前
Matlab实现基于Matrix Pencil算法实现声源信号角度和时间估计
开发语言·算法·matlab
稚辉君.MCA_P8_Java2 小时前
DeepSeek 插入排序
linux·后端·算法·架构·排序算法
多多*2 小时前
Java复习 操作系统原理 计算机网络相关 2025年11月23日
java·开发语言·网络·算法·spring·microsoft·maven
b***74883 小时前
Vue开源
前端·javascript·vue.js
.YM.Z3 小时前
【数据结构】:排序(一)
数据结构·算法·排序算法
Chat_zhanggong3453 小时前
K4A8G165WC-BITD产品推荐
人工智能·嵌入式硬件·算法