给定一个二叉树,返回它的中序 遍历。
示例:

进阶: 递归算法很简单,你可以通过迭代算法完成吗?
方法一:递归版
var inorderTraversal = function(root) {
const res = []
const rec = (n) => {
if(!n) return
rec(n.left)
res.push(n.val)
rec(n.right)
}
rec(root)
return res
};
方法二:非递归版
var inorderTraversal = function(root) {
const res = []
const stack = []
let p = root
while(stack.length||p) {
while(p) {
stack.push(p)
p = p.left
}
const n = stack.pop()
res.push(n.val)
p = n.right
}
return res
};
本文探讨了如何通过递归和迭代两种方法实现二叉树的中序遍历,包括递归版的简洁代码和非递归版的详细步骤,适合理解不同遍历方式的转换。
846

被折叠的 条评论
为什么被折叠?



