aboutsummaryrefslogtreecommitdiff
path: root/includes/js/dojox/collections/BinaryTree.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/collections/BinaryTree.js')
-rw-r--r--includes/js/dojox/collections/BinaryTree.js211
1 files changed, 0 insertions, 211 deletions
diff --git a/includes/js/dojox/collections/BinaryTree.js b/includes/js/dojox/collections/BinaryTree.js
deleted file mode 100644
index edd9fbf..0000000
--- a/includes/js/dojox/collections/BinaryTree.js
+++ /dev/null
@@ -1,211 +0,0 @@
-if(!dojo._hasResource["dojox.collections.BinaryTree"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojox.collections.BinaryTree"] = true;
-dojo.provide("dojox.collections.BinaryTree");
-dojo.require("dojox.collections._base");
-
-dojox.collections.BinaryTree=function(data){
- function node(data, rnode, lnode){
- this.value=data||null;
- this.right=rnode||null;
- this.left=lnode||null;
- this.clone=function(){
- var c=new node();
- if(this.value.value){
- c.value=this.value.clone();
- }else{
- c.value=this.value;
- }
- if(this.left!=null){
- c.left=this.left.clone();
- }
- if(this.right!=null){
- c.right=this.right.clone();
- }
- return c;
- }
- this.compare=function(n){
- if(this.value>n.value){ return 1; }
- if(this.value<n.value){ return -1; }
- return 0;
- }
- this.compareData=function(d){
- if(this.value>d){ return 1; }
- if(this.value<d){ return -1; }
- return 0;
- }
- }
-
- function inorderTraversalBuildup(current, a){
- if(current){
- inorderTraversalBuildup(current.left, a);
- a.push(current.value);
- inorderTraversalBuildup(current.right, a);
- }
- }
-
- function preorderTraversal(current, sep){
- var s="";
- if (current){
- s=current.value.toString() + sep;
- s+=preorderTraversal(current.left, sep);
- s+=preorderTraversal(current.right, sep);
- }
- return s;
- }
- function inorderTraversal(current, sep){
- var s="";
- if (current){
- s=inorderTraversal(current.left, sep);
- s+=current.value.toString() + sep;
- s+=inorderTraversal(current.right, sep);
- }
- return s;
- }
- function postorderTraversal(current, sep){
- var s="";
- if (current){
- s=postorderTraversal(current.left, sep);
- s+=postorderTraversal(current.right, sep);
- s+=current.value.toString() + sep;
- }
- return s;
- }
-
- function searchHelper(current, data){
- if(!current){ return null; }
- var i=current.compareData(data);
- if(i==0){ return current; }
- if(i>0){ return searchHelper(current.left, data); }
- else{ return searchHelper(current.right, data); }
- }
-
- this.add=function(data){
- var n=new node(data);
- var i;
- var current=root;
- var parent=null;
- while(current){
- i=current.compare(n);
- if(i==0){ return; }
- parent=current;
- if(i>0){ current=current.left; }
- else{ current=current.right; }
- }
- this.count++;
- if(!parent){
- root=n;
- }else{
- i=parent.compare(n);
- if(i>0){
- parent.left=n;
- }else{
- parent.right=n;
- }
- }
- };
- this.clear=function(){
- root=null;
- this.count=0;
- };
- this.clone=function(){
- var c=new dojox.collections.BinaryTree();
- var itr=this.getIterator();
- while(!itr.atEnd()){
- c.add(itr.get());
- }
- return c;
- };
- this.contains=function(data){
- return this.search(data) != null;
- };
- this.deleteData=function(data){
- var current=root;
- var parent=null;
- var i=current.compareData(data);
- while(i!=0&&current!=null){
- if(i>0){
- parent=current;
- current=current.left;
- }else if(i<0){
- parent=current;
- current=current.right;
- }
- i=current.compareData(data);
- }
- if(!current){ return; }
- this.count--;
- if(!current.right){
- if(!parent){
- root=current.left;
- }else{
- i=parent.compare(current);
- if(i>0){ parent.left=current.left; }
- else if(i<0){ parent.right=current.left; }
- }
- }
- else if(!current.right.left){
- if(!parent){
- root=current.right;
- }else{
- i=parent.compare(current);
- if(i>0){ parent.left=current.right; }
- else if(i<0){ parent.right=current.right; }
- }
- }
- else{
- var leftmost=current.right.left;
- var lmParent=current.right;
- while(leftmost.left!=null){
- lmParent=leftmost;
- leftmost=leftmost.left;
- }
- lmParent.left=leftmost.right;
- leftmost.left=current.left;
- leftmost.right=current.right;
- if(!parent){
- root=leftmost;
- }else{
- i=parent.compare(current);
- if(i>0){ parent.left=leftmost; }
- else if(i<0){ parent.right=leftmost; }
- }
- }
- };
- this.getIterator=function(){
- var a=[];
- inorderTraversalBuildup(root, a);
- return new dojox.collections.Iterator(a);
- };
- this.search=function(data){
- return searchHelper(root, data);
- };
- this.toString=function(order, sep){
- if(!order){ order=dojox.collections.BinaryTree.TraversalMethods.Inorder; }
- if(!sep){ sep=","; }
- var s="";
- switch(order){
- case dojox.collections.BinaryTree.TraversalMethods.Preorder:
- s=preorderTraversal(root, sep);
- break;
- case dojox.collections.BinaryTree.TraversalMethods.Inorder:
- s=inorderTraversal(root, sep);
- break;
- case dojox.collections.BinaryTree.TraversalMethods.Postorder:
- s=postorderTraversal(root, sep);
- break;
- };
- if(s.length==0){ return ""; }
- else{ return s.substring(0, s.length - sep.length); }
- };
-
- this.count=0;
- var root=this.root=null;
- if(data){
- this.add(data);
- }
-}
-dojox.collections.BinaryTree.TraversalMethods={
- Preorder: 1, Inorder: 2, Postorder: 3
-};
-
-}