Class: YmDataTree::Tree

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeTree

Returns a new instance of Tree.



6
7
8
9
# File 'lib/ym_data_tree.rb', line 6

def initialize
  @root = nil
  @in_order_traversal_datas = @post_order_traversal_datas = @pre_order_traversal_datas = []
end

Instance Attribute Details

#rootObject

Returns the value of attribute root.



10
11
12
# File 'lib/ym_data_tree.rb', line 10

def root
  @root
end

Instance Method Details

#getDatasObject



59
60
61
62
63
64
65
66
67
# File 'lib/ym_data_tree.rb', line 59

def getDatas
  if @in_order_traversal_datas != nil
    @in_order_traversal_datas
  elsif @post_order_traversal_datas != nil
    @pre_order_traversal_datas
  elsif @pre_order_traversal_datas != nil
    @post_order_traversal_datas
  end
end

#in_order_traversal(node) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/ym_data_tree.rb', line 38

def in_order_traversal(node)
    if node != nil
     in_order_traversal(node.leftChild)
      @in_order_traversal_datas.push(node.data)
     in_order_traversal(node.rightChild)
    end
end

#insert(data) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/ym_data_tree.rb', line 11

def insert(data)
  @tempNode = Node.new
  @tempNode.data = data
  if @root == nil
    @root = @tempNode
  else
    @current = @root
    @parent = nil
    status = true
    while status
      @parent = @current
      if data < @parent.data
        @current = @current.leftChild
        if @current == nil
          @parent.leftChild = @tempNode
          status = false
        end
      else
        @current = @current.rightChild
        if @current == nil
          @parent.rightChild = @tempNode
          status = false
        end
      end
    end
  end
end

#post_order_traversal(node) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/ym_data_tree.rb', line 45

def post_order_traversal(node)
  if node != nil
      post_order_traversal(node.leftChild)
      post_order_traversal(node.rightChild)
      @post_order_traversal_datas.push(node.data)
  end
end

#pre_order_traversal(node) ⇒ Object



52
53
54
55
56
57
58
# File 'lib/ym_data_tree.rb', line 52

def pre_order_traversal(node)
   if node != nil
     @pre_order_traversal_datas.push(node.data)
     pre_order_traversal(node.leftChild)
     pre_order_traversal(node.rightChild)
   end
end