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

回忆一下递归实现

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
}
相关推荐
要开心吖ZSH5 分钟前
软件设计师备考-(十六)数据结构及算法应用(重要)
java·数据结构·算法·软考·软件设计师
带娃的IT创业者18 分钟前
如何开发一个教育性质的多线程密码猜测演示器
网络·python·算法
摸鱼的春哥33 分钟前
前端程序员最讨厌的10件事
前端·javascript·后端
zhong liu bin2 小时前
MySQL数据库面试题整理
数据结构·数据库·mysql
Aczone282 小时前
硬件(六)arm指令
开发语言·汇编·arm开发·嵌入式硬件·算法
牧羊狼的狼5 小时前
React 中的 HOC 和 Hooks
前端·javascript·react.js·hooks·高阶组件·hoc
知识分享小能手6 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
luckys.one6 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
mCell7 小时前
JavaScript 的多线程能力:Worker
前端·javascript·浏览器
~|Bernard|8 小时前
在 PyCharm 里怎么“点鼠标”完成指令同样的运行操作
算法·conda