summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/models/tree.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/rectangles/models/tree.js')
-rw-r--r--public/assets/javascripts/rectangles/models/tree.js85
1 files changed, 48 insertions, 37 deletions
diff --git a/public/assets/javascripts/rectangles/models/tree.js b/public/assets/javascripts/rectangles/models/tree.js
index 8193988..7c698fe 100644
--- a/public/assets/javascripts/rectangles/models/tree.js
+++ b/public/assets/javascripts/rectangles/models/tree.js
@@ -1,37 +1,48 @@
-var Tree = function(n, data){
- this.lo = null
- this.hi = null
- this.value = n
- this.data = data
-}
-Tree.prototype.find = function(n){
- if (n == this.value) return this
- if (n < this.value) return this.lo ? this.lo.find(n) : this
- if (n > this.value) return this.hi ? this.hi.find(n) : this
-}
-Tree.prototype.add = function(n, data){
- var closest = this.find(n)
- if (n == closest.value) return closest
- if (n < closest.value) return closest.lo = new Tree(n, data)
- if (n > closest.value) return closest.hi = new Tree(n, data)
-}
-Tree.prototype.toArray = function(){
- var a = []
- if (this.lo) a = a.concat(this.lo.toArray())
- a.push(this.data)
- if (this.hi) a = a.concat(this.hi.toArray())
- return a
-}
-Tree.prototype.toString = function(){
- var s = "";
- if (this.lo) s += this.lo.toString()
- s += this.value + ","
- if (this.hi) s += this.hi.toString()
- return s
-}
-Tree.prototype.depth = function(){
- if (this.lo && this.hi) return 1 + max(this.lo.depth(), this.hi.depth())
- else if (this.lo) return 1 + this.lo.depth()
- else if (this.hi) return 1 + this.hi.depth()
- else return 0
-}
+(function(){
+
+ var Tree = function(n, data){
+ this.lo = null
+ this.hi = null
+ this.value = n
+ this.data = data
+ }
+ Tree.prototype.find = function(n){
+ if (n == this.value) return this
+ if (n < this.value) return this.lo ? this.lo.find(n) : this
+ if (n > this.value) return this.hi ? this.hi.find(n) : this
+ }
+ Tree.prototype.add = function(n, data){
+ var closest = this.find(n)
+ if (n == closest.value) return closest
+ if (n < closest.value) return closest.lo = new Tree(n, data)
+ if (n > closest.value) return closest.hi = new Tree(n, data)
+ }
+ Tree.prototype.toArray = function(){
+ var a = []
+ if (this.lo) a = a.concat(this.lo.toArray())
+ a.push(this.data)
+ if (this.hi) a = a.concat(this.hi.toArray())
+ return a
+ }
+ Tree.prototype.toString = function(){
+ var s = "";
+ if (this.lo) s += this.lo.toString()
+ s += this.value + ","
+ if (this.hi) s += this.hi.toString()
+ return s
+ }
+ Tree.prototype.depth = function(){
+ if (this.lo && this.hi) return 1 + max(this.lo.depth(), this.hi.depth())
+ else if (this.lo) return 1 + this.lo.depth()
+ else if (this.hi) return 1 + this.hi.depth()
+ else return 0
+ }
+
+ if ('window' in this) {
+ window.Tree = Tree
+ }
+ else {
+ module.exports = Tree
+ }
+
+})()