binary_tree 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/binary_tree.rb +78 -0
  3. metadata +43 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: af13630aedbfafdaa8977f72f687e9741ad6a929a294ea81d6107903c1c1387f
4
+ data.tar.gz: 0c8d6ca0477b11e84bfea0ee325db8d6e9774d2936e262d38dc995ddd154779f
5
+ SHA512:
6
+ metadata.gz: 3cbe7b5bd9b6a2f7db0a9579bd08d9bbb54f11964475a4aba3e8a795d2776fcc179ae41d0a021482620d7d08b77e6f9bf127e02dc89a5917da168bd1ef3e29cc
7
+ data.tar.gz: 1de26b3d8bfba6affc68f7b20d58b02b1414480d3f3b9ce5faf04bed6901c147d2f6ef161418eada8ff0d45d595ca3455597829f4f69f86e9bb3480f1828ff2f
@@ -0,0 +1,78 @@
1
+ class BinaryTree
2
+ attr_reader :data
3
+ attr_accessor :left, :right
4
+ @@root = nil
5
+ def initialize(data=nil)
6
+ @data = data
7
+ @left = nil
8
+ @right = nil
9
+ end
10
+
11
+ # insert data in binary tree node
12
+ def insert(node, data)
13
+ q = []
14
+ if node == nil
15
+ @@root = BinaryTree.new(data)
16
+ return
17
+ end
18
+ q.push(node)
19
+ while (!q.empty?)
20
+ node = q.shift
21
+ if node.left == nil
22
+ node.left = BinaryTree.new(data)
23
+ break
24
+ else
25
+ q.push(node.left)
26
+ end
27
+ if node.right == nil
28
+ node.right = BinaryTree.new(data)
29
+ break
30
+ else
31
+ q.push(node.right)
32
+ end
33
+ end
34
+ end
35
+
36
+ # print data in inorder form (left, root, right)
37
+ def inorder(node)
38
+ if node == nil
39
+ return
40
+ end
41
+ inorder(node.left)
42
+ puts "#{node.data}"
43
+ inorder(node.right)
44
+ end
45
+
46
+ # print data in preorder form (root, left, right)
47
+ def preorder(node)
48
+ if node == nil
49
+ return
50
+ end
51
+ puts "#{node.data}"
52
+ preorder(node.left)
53
+ preorder(node.right)
54
+ end
55
+
56
+ # print data in postorder for (left, right, root)
57
+ def postorder(node)
58
+ if node == nil
59
+ return
60
+ end
61
+ postorder(node.left)
62
+ postorder(node.right)
63
+ puts "#{node.data}"
64
+ end
65
+
66
+ def test_binary_tree
67
+ for i in 1..5 do
68
+ BinaryTree.new.insert(@@root, rand(100))
69
+ end
70
+ puts "inorder : "
71
+ inorder(@@root)
72
+ puts "preorder : "
73
+ preorder(@@root)
74
+ puts "postorder : "
75
+ postorder(@@root)
76
+ end
77
+
78
+ end
metadata ADDED
@@ -0,0 +1,43 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: binary_tree
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - shubham jain
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-03-11 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple binary tree gem
14
+ email: shubhammpdgj@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/binary_tree.rb
20
+ homepage: https://github.com/shubhamjain108-lab/binary-tree/blob/master/binary_tree.rb
21
+ licenses:
22
+ - shubhamjain
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubygems_version: 3.0.3
40
+ signing_key:
41
+ specification_version: 4
42
+ summary: Implement binary tree node
43
+ test_files: []