LeetCode 94. 二叉树的中序遍历 (递归与非递归解法)

题目

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

示例:

输入: [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
};

猜你喜欢

转载自blog.csdn.net/weixin_42429718/article/details/108182134
今日推荐