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