二叉树的中序遍历

4/8/2022 二叉树深度优先遍历

# 代码

/**
 * 递归写法
 * @param {TreeNode} root
 * @return {number[]}
 */
var inorderTraversal = function(root) {
    let result = [];
    function _inorderTraversal(root, result){
        // 确定递归出口
        if(!root) return;
        _inorderTraversal(root.left, result);
        result.push(root.val);
        _inorderTraversal(root.right, result);
    }
    _inorderTraversal(root, result);
    return result;
};
// 中序遍历,利用 `栈` 实现
var inorderTraversal = function(root) {
    if(root == null) return [];
    let res = []; // 最终结果
    let cur = root;
    let stack = []; // 利用数组模拟栈
    while(cur || stack.length > 0){
        if(cur !== null){ // 处理左子树
            stack.push(cur);
            cur = cur.left;
        }else{ // 处理中间节点,再处理右子树
            cur = stack.pop();
            res.push(cur.val);
            cur = cur.right;
        }
    }
    return res;
};
Last Updated: 5/12/2023, 11:06:26 AM