<script>
class Node {
constructor(key) {
this.key = key;
this.left = null;
this.right = null;
}
}
class CreateBinaryTree {
constructor() {
this.root = null;
}
insertNode(key) {
// 插入节点
if (!key) return;
let newNode = new Node(key);
let insert = (node, newNode) => {
if (node.key > newNode.key) {
if (node.left === null) {
node.left = newNode;
} else {
insert(node.left, newNode);
}
} else {
if (node.right === null) {
node.right = newNode;
} else {
insert(node.right, newNode);
}
}
}
if (!this.root) {
this.root = node;
} else {
insert(this.root, newNode);
}
}
//中序遍历
inOrder() {
let backs = [];
const inOrderNode = (node, callback) => {
if (node !== null) {
inOrderNode(node.left, callback);
backs.push(callback(node.data));
inOrderNode(node.right, callback)
}
};
inOrderNode(this.root);
function callback(v) {
return v
}
return backs
}
//中序遍历
inOrder() {
let backs = [];
const inOrderNode = (node, callback) => {
if (node !== null) {
inOrderNode(node.left, callback);
backs.push(callback(node.data));
inOrderNode(node.right, callback)
}
};
inOrderNode(this.root);
function callback(v) {
return v
}
return backs
}
//前序遍历
preOrder() {
let backs = [];
const preOrderNode = (node, callback) => {
if (node !== null) {
backs.push(callback(node.data));
preOrderNode(node.left, callback);
preOrderNode(node.right, callback)
}
};
preOrderNode(this.root, callback);
function callback(v) {
return v
}
return backs
}
//后序遍历
postOrder() {
let backs = [];
const postOrderNode = (node, callback) => {
if (node !== null) {
postOrderNode(node.left, callback);
postOrderNode(node.right, callback);
backs.push(callback(node.data))
}
};
postOrderNode(this.root, callback);
function callback(v) {
return v
}
return bac
}
}
let binaryTree = new CreateBinaryTree();
tree.insert(11);
tree.insert(7);
tree.insert(5);
tree.insert(3);
tree.insert(9);
tree.insert(8);
tree.insert(10);
tree.insert(13);
tree.insert(12);
tree.insert(14);
tree.insert(20);
tree.insert(18);
tree.insert(25);
console.log(tree);
</script>
原文来自:添加链接描述 只供记录作用,如有打扰,万分抱歉