首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js遍历二叉树算法

在JavaScript中遍历二叉树的常用算法有前序遍历、中序遍历、后序遍历和层序遍历。

前序遍历:先访问根节点,然后遍历左子树,最后遍历右子树。 中序遍历:先遍历左子树,然后访问根节点,最后遍历右子树。 后序遍历:先遍历左子树,然后遍历右子树,最后访问根节点。 层序遍历:按照从上到下、从左到右的顺序依次访问二叉树的节点。

以下是前序遍历的示例代码(使用递归):

代码语言:txt
复制
function TreeNode(val) {
    this.val = val;
    this.left = this.right = null;
}

function preorderTraversal(root) {
    let result = [];
    function traverse(node) {
        if (node === null) {
            return;
        }
        result.push(node.val);
        traverse(node.left);
        traverse(node.right);
    }
    traverse(root);
    return result;
}

以下是中序遍历的示例代码(使用递归):

代码语言:txt
复制
function inorderTraversal(root) {
    let result = [];
    function traverse(node) {
        if (node === null) {
            return;
        }
        traverse(node.left);
        result.push(node.val);
        traverse(node.right);
    }
    traverse(root);
    return result;
}

以下是后序遍历的示例代码(使用递归):

代码语言:txt
复制
function postorderTraversal(root) {
    let result = [];
    function traverse(node) {
        if (node === null) {
            return;
        }
        traverse(node.left);
        traverse(node.right);
        result.push(node.val);
    }
    traverse(root);
    return result;
}

以下是层序遍历的示例代码(使用队列):

代码语言:txt
复制
function levelOrderTraversal(root) {
    if (root === null) {
        return [];
    }
    let result = [];
    let queue = [root];
    while (queue.length > 0) {
        let node = queue.shift();
        result.push(node.val);
        if (node.left!== null) {
            queue.push(node.left);
        }
        if (node.right!== null) {
            queue.push(node.right);
        }
    }
    return result;
}

这些遍历算法的应用场景很广泛,例如在二叉搜索树中查找特定值时可能会用到中序遍历得到有序序列,或者在表达式树的计算中使用后序遍历来计算结果等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券