class Tree {
constructor() { //初始树
this.root = null;
this.result_array = [];
}
Node(val) {
return {
left: null,
right: null,
val: val
}
}
insertNode(node, new_node) {
if (new_node.val < node.val) {
if (!node.left) {
node.left = new_node;
} else {
this.insertNode(node.left, new_node);
}
} else { // 新节点的权值不小于原节点则递归插入右孩子
if (!node.right) {
node.right = new_node;
} else {
this.insertNode(node.right, new_node);
}
}
}
insert(val, node) {
let new_node = this.Node(val, node);
if (!this.root) {
this.root = new_node;
} else {
this.insertNode(this.root, new_node)
}
};
midShow(node) {
if (node != null) {
this.midShow(node.left);
// 再遍历父节点
this.result_array.push(node.val);
// 后遍历右孩子
this.midShow(node.right);
}
}
findVal(node, val) {
if (val === node.val) return true
else if (val > node.val) return this.findVal(node.right, val)
else if (val < node, val) return this.findVal(node.left, val)
else return false
}
}
let tree = new Tree();
let a = [123, 45, 456, -89, 68, 5, 235, -78];
a.forEach(item => {
tree.insert(item);
});
tree.midShow(tree.root)
console.log(tree.result_array);
let res = tree.findVal(tree.root, 456)
console.log(res);