原文:94. 二叉树的中序遍历(leetcode 解题) - 每天一个JavaScript小知识@Js中文网 · 码农进阶题库

原文地址:https://www.javascriptc.com/interview-tips/zh_cn/leetcode/leetcode-javascript-solution-094/

题目:

难度:Middle

相关话题:哈希表

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

示例:

输入: [1,null,2,3]
   1
    \
     2
    /
   3

输出: [1,3,2]

进阶: 递归算法很简单,你可以通过迭代算法完成吗?


思路:

模拟一个stack来替代递归时的系统stack

/**
 * @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
 * @介绍:一个致力于帮助开发者用代码改变世界为使命的平台,每天都可以在这里找到技术世界的头条内容
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var inorderTraversal = function(root) {
    // let stack=[]
    // let node=root
    // let res=[]
    // while(stack.length>0 || node!==null){
    //     while(node){
    //         stack.push(node)
    //         node=node.left
    //     }
    //     node=stack.pop()
    //     res.push(node.val)
    //     node=node.right
    // }
    // return res


    // if(!root)return []
    let result=[]
    let node=root
    let stack=[]
    while(stack.length>0 || node!=null){
        while(node){
            stack.push(node)
            node=node.left
        }
        node=stack.pop()
        result.push(node.val)
        node=node.right
    }
    return result

};

扩展阅读: