《JavaScript算法》前中后序遍历

52 阅读1分钟
function TreeNode(val, left, right) {
    this.val = (val === undefined ? 0 : val)
    this.left = (left === undefined ? null : left)
    this.right = (right === undefined ? null : right)
}

function preorderTraversal(root) {
    const result = [];

    function traverse(node) {
        if (node === null) {
            return;
        }
        result.push(node.val); // 访问根节点  
        traverse(node.left); // 遍历左子树  
        traverse(node.right); // 遍历右子树  
    }
    traverse(root);
    return result;
}

// 示例使用  
const root = new TreeNode(1);
root.right = new TreeNode(2);
root.right.left = new TreeNode(3);

console.log(preorderTraversal(root)); // 输出: [1, 2, 3]
function TreeNode(val, left, right) {
    this.val = (val === undefined ? 0 : val);
    this.left = (left === undefined ? null : left);
    this.right = (right === undefined ? null : right);
}

function inorderTraversal(root) {
    const result = [];

    function traverse(node) {
        if (node === null) {
            return;
        }
        traverse(node.left); // 遍历左子树  
        result.push(node.val); // 访问根节点  
        traverse(node.right); // 遍历右子树  
    }
    traverse(root);
    return result;
}

// 示例使用  
const root = new TreeNode(1);
root.right = new TreeNode(2);
root.right.left = new TreeNode(3);

console.log(inorderTraversal(root)); // 输出: [1, 3, 2]
function TreeNode(val, left, right) {
    this.val = (val === undefined ? 0 : val);
    this.left = (left === undefined ? null : left);
    this.right = (right === undefined ? null : right);
}

function postorderTraversal(root) {
    const result = [];

    function traverse(node) {
        if (node === null) {
            return;
        }
        traverse(node.left); // 遍历左子树  
        traverse(node.right); // 遍历右子树  
        result.push(node.val); // 访问根节点  
    }
    traverse(root);
    return result;
}

// 示例使用  
const root = new TreeNode(1); // 根节点  
root.right = new TreeNode(2); // 第二层右节点  
root.right.left = new TreeNode(3); // 第三层左节点  

console.log(postorderTraversal(root)); // 输出: [1, 3, 2]