在 JavaScript 中实现二叉树的遍历,可以使用递归或迭代的方式。以下是三种常见的遍历方式:前序遍历 (Pre-order)、中序遍历 (In-order)和后序遍历(Post-order)。
定义二叉树节点类
js
class TreeNode {
constructor(val) {
this.val = val;
this.left = null;
this.right = null;
}
}
前序遍历(Pre-order Traversal)
前序遍历的顺序是:根节点 -> 左子树 -> 右子树。
js
function preOrderTraversal(root) {
if (!root) return [];
const result = [];
function traverse(node) {
if (!node) return;
result.push(node.val); // 访问根节点
traverse(node.left); // 遍历左子树
traverse(node.right); // 遍历右子树
}
traverse(root);
return result;
}
中序遍历(In-order Traversal)
中序遍历的顺序是:左子树 -> 根节点 -> 右子树。
js
function inOrderTraversal(root) {
if (!root) return [];
const result = [];
function traverse(node) {
if (!node) return;
traverse(node.left); // 遍历左子树
result.push(node.val); // 访问根节点
traverse(node.right); // 遍历右子树
}
traverse(root);
return result;
}
}
后序遍历(Post-order Traversal)
后序遍历的顺序是:左子树 -> 右子树 -> 根节点。
js
function postOrderTraversal(root) {
if (!root) return [];
const result = [];
function traverse(node) {
if (!node) return;
traverse(node.left); // 遍历左子树
traverse(node.right); // 遍历右子树
result.push(node.val); // 访问根节点
}
traverse(root);
return result;
}
假设有这样一颗树
js
1
/ \
2 3
/ \
4 5
我们可以创建这棵树并进行遍历:
js
const root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
console.log(preOrderTraversal(root)); // 输出: [1, 2, 4, 5, 3]
console.log(inOrderTraversal(root)); // 输出: [4, 2, 5, 1, 3]
console.log(postOrderTraversal(root)); // 输出: [4, 5, 2, 3, 1]
本内容由AI搜索,仅供学习参考