题目
给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,3,2]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
代码
递归解法
var inorderTraversal = function(root) {
if(!root) return []
let res = []
let trace = (root) => {
if(!root) return
trace(root.left)
res.push(root.val)
trace(root.right)
}
trace(root)
return res
};
非递归解法
var inorderTraversal = function(root) {
if(!root) return []
let p = root,res = []
let stack = []
while(stack.length || p){
while(p){
stack.push(p)
p = p.left
}
let node = stack.pop()
res.push(node.val)
p = node.right
}
return res
};