题目:
难度:Middle
相关话题:栈
、树
、哈希表
给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,3,2]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
思路:
模拟一个stack
来替代递归时的系统stack
。
/**
* @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
* @介绍:一个致力于帮助开发者用代码改变世界为使命的平台,每天都可以在这里找到技术世界的头条内容
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var inorderTraversal = function(root) {
// let stack=[]
// let node=root
// let res=[]
// while(stack.length>0 || node!==null){
// while(node){
// stack.push(node)
// node=node.left
// }
// node=stack.pop()
// res.push(node.val)
// node=node.right
// }
// return res
// if(!root)return []
let result=[]
let node=root
let stack=[]
while(stack.length>0 || node!=null){
while(node){
stack.push(node)
node=node.left
}
node=stack.pop()
result.push(node.val)
node=node.right
}
return result
};
扩展阅读: