<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>二叉树算法</title>
<script type="text/javascript">
window.onload = function ) {
function Nodedata, left, right) {
this.data = data;
this.left = left;
this.right = right;
}
Node.prototype.show = function) {
return this.data;
}
//建立一个二叉树
function BST) {
this.root = null;
}
//二叉树的插入操作
BST.prototype.insert = functiondata) {
var n = new Nodedata, null, null);
ifthis.root === null) {
this.root = n;
}else {
var current = this.root;
var parent;
whiletrue) {
parent = current;
ifdata < current.data) {
current = current.left;
ifcurrent === null) {
parent.left = n;
break;
}
}else {
current = current.right;
ifcurrent === null) {
parent.right = n;
break;
}
}
}
}
}
//二叉树的历遍操作
BST.prototype.inOrder = functionnode) {
if!node === null)) {
this.inOrdernode.left);
console.lognode.show));
this.inOrdernode.right);
}
}//中序历遍
BST.prototype.preOrder = functionnode) {
if!node === null)) {
console.lognode.show));
this.inOrdernode.left);
this.inOrdernode.right);
}
}//先序历遍
BST.prototype.postOrder = functionnode) {
if!node === null)) {
this.inOrdernode.left);
this.inOrdernode.right);
console.lognode.show));
}
}//后序历遍
BST.prototype.getMin = function) {
var current = this.root;
while!current.left === null)) {
current = current.left;
}
return current.data;
}//获取最小值
BST.prototype.getMax = function) {
var current = this.root;
while!current.right === null)) {
current = current.right;
}
return current.data;
}//获取最大值
BST.prototype.find = functiondata) {
var current = this.root;
whilecurrent !== null) {
ifcurrent.data === data) {
return current.data;
}else ifdata < current.data) {
current = current.left;
}else {
current = current.right;
}
}
return null;
}//查找节点
BST.prototype.getSmallest = functionnode) {
if node.left == null) {
return node;
}
else {
return this.getSmallestnode.left);
}
}
//删除一个节点,需要传入一个root节点根节点)
BST.prototype.remove = functionnode, data) {
ifnode === null) {
return null;
}
ifdata == node.data) {
ifnode.left === null && node.right === null) {
return null;
}
ifnode.left === null) {
return node.right;
}
ifnode.right === null) {
return node.left;
}
var tempNode = this.getSmallestnode.right);
node.data = tempNode.data;
node.right = removenode.right, tempNode.data);
return node;
}else ifdata < node.data) {
node.left = this.removenode.left, data);
return node;
}else {
node.right = this.removenode.right, data);
return node;
}
}
var num = new BST);
num.insert23);
num.insert45);
num.insert16);
num.insert37);
num.insert3);
num.insert99);
num.insert22);
//console.lognum.root);
//num.inOrdernum.root);
//console.lognum.getMin));
//console.lognum.getMax));
num.inOrdernum.root);
console.lognum.removenum.root,37));
num.inOrdernum.root);
}
</script>
</head>
<body>
</body>
</html>
发表回复