Class: Tree::BST
- Inherits:
-
Object
- Object
- Tree::BST
- Defined in:
- lib/data_struct/tree.rb
Overview
This is implementation Binary search tree using Tree::BinaryNode
Instance Attribute Summary collapse
-
#length ⇒ Object
readonly
Returns the value of attribute length.
Instance Method Summary collapse
- #delete(key, node = @root) ⇒ Object
- #empty? ⇒ Boolean
- #find(val) ⇒ Object
- #height? ⇒ Boolean
-
#initialize ⇒ BST
constructor
A new instance of BST.
- #insert(val) ⇒ Object
- #max(node = @root) ⇒ Object
- #min(node = @root) ⇒ Object
- #to_a ⇒ Object
Constructor Details
#initialize ⇒ BST
Returns a new instance of BST.
26 27 28 29 30 |
# File 'lib/data_struct/tree.rb', line 26 def initialize @root = nil @length, @height = 0 @state_arr = [] end |
Instance Attribute Details
#length ⇒ Object (readonly)
Returns the value of attribute length.
25 26 27 |
# File 'lib/data_struct/tree.rb', line 25 def length @length end |
Instance Method Details
#delete(key, node = @root) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/data_struct/tree.rb', line 50 def delete(key, node = @root) return @root = node if node.nil? if key < node.data node.left = delete(key, node.left) elsif key > node.data node.right = delete(key, node.right) else if node.left.nil? temp = node.right node = nil return temp elsif node.right.nil? temp = node.left node = nil return temp end temp = min(node.right) node.data = temp.data node.right = delete(temp.data, node.right) end @root = node end |
#empty? ⇒ Boolean
80 81 82 |
# File 'lib/data_struct/tree.rb', line 80 def empty? @length.zero? end |
#find(val) ⇒ Object
74 75 76 |
# File 'lib/data_struct/tree.rb', line 74 def find val recur_search @root, val end |
#height? ⇒ Boolean
83 84 85 |
# File 'lib/data_struct/tree.rb', line 83 def height? recur_max_depth @root end |
#insert(val) ⇒ Object
32 33 34 35 |
# File 'lib/data_struct/tree.rb', line 32 def insert val in_length @root = recur_insert @root, val end |
#max(node = @root) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/data_struct/tree.rb', line 43 def max(node = @root) cur = node unless node.right.nil? cur = cur.right end cur end |
#min(node = @root) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/data_struct/tree.rb', line 36 def min(node = @root) cur = node unless node.left.nil? cur = cur.left end cur end |
#to_a ⇒ Object
77 78 79 |
# File 'lib/data_struct/tree.rb', line 77 def to_a recur_pre_order @root, [] end |