94.中序遍历

71 阅读1分钟

代码

递归

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)