数据结构 - 插入二叉树的实现
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>插入二叉树</title>
</head>
<body>
<script>
function BinaryTree(){
var Node = function(key){
// 2
this.key = key;
this.left = null;
this.right = null;
}
var root = null;
/*
1. 如果newNode < node
1.1 如果node.left为空,newNode赋给node.left
1.2 否则再次比较newNode < node.left
*/
var insertNode = function(node, newNode){
// 3
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){
// 1
// 实例化node节点
var newNode = new Node(key);
// 根节点为空,便将newNode赋给root节点
if (root === null) {
root = newNode;
} else {
// 根节点存在,插入新节点
insertNode(root, newNode);
};
}
}
var nodes = [8, 3, 10, 1, 6, 14, 4, 7, 13];
var binaryTree = new BinaryTree();
// 将数组中的每个元素插入到二叉树中
nodes.forEach(function(key){
binaryTree.insert(key);
})
</script>
</body>
</html>