代码
递归
var inorderTraversal = function(root) {
const res = []
const rec = (n) => {
if(n){
rec(n.left)
res.push(n.val)
rec(n.right)
}
}
rec(root)
return res
};
非递归
var inorderTraversal = function (root) {
const res = []
const stack = []
const rec = (n) => {
if (n) {
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;
}
}
}
rec(root)
return res
};
复杂度
时间:O(n)
空间:O(n)