-
Notifications
You must be signed in to change notification settings - Fork 193
/
Copy pathbinaryTree02.html
81 lines (77 loc) · 2.19 KB
/
binaryTree02.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>前序遍历</title>
</head>
<body>
<script>
function BinaryTree() {
//创建一个节点
var Node = function (key) {
this.key = key;
this.left = null;
this.right = null;
};
//创建一个根节点
var root = null;
var insertNode = function (node, newNode) {
if (newNode.key < node.key) {
if (node.left === null) {
node.left = newNode;
} else {
insertNode(node.left, newNode);
}
} else {
if (node.right === null) {
node.right = newNode;
} else {
insertNode(node.right, newNode);
}
}
}
//创建一个函数用来插入节点
this.insert = function (key) {
var newNode = new Node(key);
if (root === null) {
root = newNode;
} else {
insertNode(root, newNode);
}
};
//中序遍历代码实现
var inOrderTraverseNode = function (node, callback) {
if (node !== null) {
inOrderTraverseNode(node.left, callback);
callback(node.key);
inOrderTraverseNode(node.right, callback);
}
}
this.inOrderTraverse = function (callback) {
inOrderTraverseNode(root, callback);
}
//前序遍历代码实现
var preOrderTraverseNode = function (node, callback) {
if (node !== null) {
callback(node.key);
preOrderTraverseNode(node.left, callback);
preOrderTraverseNode(node.right, callback);
}
}
this.preOrderTraverse = function (callback) {
preOrderTraverseNode(root, callback);
}
}
var nodes = [8, 3, 10, 1, 6, 14, 4, 7, 13];
var binaryTree = new BinaryTree();
nodes.forEach(function (key) {
binaryTree.insert(key);
});
//遍历整个二叉树
var callback = function (key) {
console.log(key);
}
binaryTree.preOrderTraverse(callback);
</script>
</body>
</html>