<!DOCTYPE html>
<
html>
<
head>
<
meta
charset=
"UTF-8">
<
meta
name=
"viewport"
content=
"width=device-width,initial-scale=1">
<
meta
http-equiv=
"X-UA-Compatible"
content=
"ie=edge">
<
title>排序二叉树</
title>
</
head>
<
body>
<
div>111</
div>
<
script>
function
BinaryTree(
arr) {
if (
Object.prototype.toString.
call(arr).
slice(
8,
-
1)
!==
'Array') {
throw
new
TypeError(
'只接受一个数组作为参数')
}
this.root
=
null;
this.arr
= arr;
//生成节点
function
TreeNode(
key) {
this.key
= key;
this.left
=
null;
this.right
=
null;
}
//初始化tree
this.
init
=
function () {
for (
var i
=
0, len
=
this.arr.length; i
< len; i
++) {
this.
insert(
this.arr[i]);
}
}
this.
insert
=
function (
key) {
var newNode
=
new
TreeNode(key);
if (
this.root
===
null) {
this.root
= newNode;
return;
}
this.
insertNode(
this.root, newNode);
}
this.
insertNode
=
function (
rootNode,
newNode) {
if (rootNode.key
> newNode.key) {
if (rootNode.left
===
null) {
rootNode.left
= newNode;
return;
}
this.
insertNode(rootNode.left, newNode);
}
else {
if (rootNode.right
===
null) {
rootNode.right
= newNode;
return;
}
this.
insertNode(rootNode.right, newNode);
}
}
}
var arr
= [
9,
10,
5,
6,
13,
8,
22,
11,
3,
4,
15];
var tree
=
new
BinaryTree(arr);
tree.
init();
console.
log(tree);
</
script>
</
body>
</
html>