SOURCE

// 定义二叉树节点类
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 命令行工具 X clear

                    
>
console