SOURCE

class TreeNode {
  constructor(val) {
    this.val = val;
    this.left = null;
    this.right = null;
  }
}

class BinaryTree {
  constructor(root = null) {
    this.root = root;
  }

  // 前序:根 -> 左 -> 右
  preOrderRecursive(node = this.root, result = []) {
    if (!node) return result;
    result.push(node.val);
    this.preOrderRecursive(node.left, result);
    this.preOrderRecursive(node.right, result);
    return result;
  }

  // 中序:左 -> 根 -> 右
  inOrderRecursive(node = this.root, result = []) {
    if (!node) return result;
    this.inOrderRecursive(node.left, result);
    result.push(node.val);
    this.inOrderRecursive(node.right, result);
    return result;
  }

  // 后序:左 -> 右 -> 根
  postOrderRecursive(node = this.root, result = []) {
    if (!node) return result;
    this.postOrderRecursive(node.left, result);
    this.postOrderRecursive(node.right, result);
    result.push(node.val);
    return result;
  }
}


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);

const tree = new BinaryTree(root);

console.log("前序:", tree.preOrderRecursive()); // [1,2,4,5,3]
console.log("中序:", tree.inOrderRecursive());  // [4,2,5,1,3]
console.log("后序:", tree.postOrderRecursive());// [4,5,2,3,1]
console 命令行工具 X clear

                    
>
console