在JavaScript中遍历二叉树的常用算法有前序遍历、中序遍历、后序遍历和层序遍历。
前序遍历:先访问根节点,然后遍历左子树,最后遍历右子树。 中序遍历:先遍历左子树,然后访问根节点,最后遍历右子树。 后序遍历:先遍历左子树,然后遍历右子树,最后访问根节点。 层序遍历:按照从上到下、从左到右的顺序依次访问二叉树的节点。
以下是前序遍历的示例代码(使用递归):
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;
}
以下是中序遍历的示例代码(使用递归):
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;
}
以下是后序遍历的示例代码(使用递归):
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;
}
以下是层序遍历的示例代码(使用队列):
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;
}
这些遍历算法的应用场景很广泛,例如在二叉搜索树中查找特定值时可能会用到中序遍历得到有序序列,或者在表达式树的计算中使用后序遍历来计算结果等。
领取专属 10元无门槛券
手把手带您无忧上云