// 定义二叉树节点类
class TreeNode {
constructor(value) {
this.val = value;
this.left = null;
this.right = null;
}
}
// 构建二叉树
const root = new TreeNode('A');
const nodeB = new TreeNode('B');
const nodeC = new TreeNode('C');
const nodeD = new TreeNode('D');
const nodeE = new TreeNode('E');
const nodeF = new TreeNode('F');
root.left = nodeB;
root.right = nodeC;
nodeB.left = nodeD;
nodeB.right = nodeE;
nodeC.right = nodeF;
// 遍历二叉树的函数
// 前序遍历
function preorderTraversal(root) {
if (root === null) return;
console.log(root.val); // 访问当前节点
preorderTraversal(root.left); // 递归遍历左子树
preorderTraversal(root.right); // 递归遍历右子树
}
// 中序遍历
function inorderTraversal(root) {
if (root === null) return;
inorderTraversal(root.left); // 递归遍历左子树
console.log(root.val); // 访问当前节点
inorderTraversal(root.right); // 递归遍历右子树
}
// 后序遍历
function postorderTraversal(root) {
if (root === null) return;
postorderTraversal(root.left); // 递归遍历左子树
postorderTraversal(root.right); // 递归遍历右子树
console.log(root.val); // 访问当前节点
}
// 层序遍历(利用队列实现)
function levelOrderTraversal(root) {
if (root === null) return;
const queue = [root];
while (queue.length > 0) {
const node = queue.shift();
console.log(node.val); // 访问当前节点
if (node.left) queue.push(node.left);
if (node.right) queue.push(node.right);
}
}
// 调用不同的遍历函数进行遍历
console.log('Preorder Traversal:');
preorderTraversal(root);
console.log('Inorder Traversal:');
inorderTraversal(root);
console.log('Postorder Traversal:');
postorderTraversal(root);
console.log('Level Order Traversal:');
levelOrderTraversal(root);
console