Class: Tree::BST

Inherits:
Object
  • Object
show all
Defined in:
lib/data_struct/tree.rb

Overview

This is implementation Binary search tree using Tree::BinaryNode

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBST

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

#lengthObject (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

Returns:

  • (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

Returns:

  • (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_aObject



77
78
79
# File 'lib/data_struct/tree.rb', line 77

def to_a
  recur_pre_order @root, []
end