144.二叉树的前序遍历

10min

二叉树的前序遍历的顺序是中 - 左 - 右

先遍历完所有的根节点与左节点,然后处理右节点

可以看出来这是一个递归的行为,递归问题可以用栈来进行简化

迭代解法

var preorderTraversal = function(root) {
    if (!root) return null    var stack = [root]
    var res = []
    while(stack.length) {
        var node = stack.pop()
        res.push(node.val)
        node.right && stack.push(node.right)
        node.left && stack.push(node.left)
    }
    return res
};

递归解法

递归问题当然可以递归解决

var preorderTraversal = function(root) {
    var res = []
    if (!root) return res
    var travel = function (node) {
        res.push(node.val)
        node.left && travel(node.left)
        node.right && travel(node.right)
    }
    travel(root)
    return res
};