trackler 2.0.3.0 → 2.0.3.1

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 (110) hide show
  1. checksums.yaml +4 -4
  2. data/fixtures/common/exercises/no-metadata/description.md +1 -0
  3. data/lib/trackler/problem.rb +12 -0
  4. data/lib/trackler/problems.rb +8 -12
  5. data/lib/trackler/version.rb +1 -1
  6. data/tracks/bash/README.md +2 -0
  7. data/tracks/c/config.json +9 -2
  8. data/tracks/c/exercises/sieve/makefile +15 -0
  9. data/tracks/c/exercises/sieve/src/example.c +50 -0
  10. data/tracks/c/exercises/sieve/src/sieve.h +10 -0
  11. data/tracks/c/exercises/sieve/test/test_sieve.c +113 -0
  12. data/tracks/c/exercises/sieve/test/vendor/unity.c +1300 -0
  13. data/tracks/c/exercises/sieve/test/vendor/unity.h +274 -0
  14. data/tracks/c/exercises/sieve/test/vendor/unity_internals.h +701 -0
  15. data/tracks/coffeescript/.travis.yml +1 -0
  16. data/tracks/coldfusion/.travis.yml +1 -0
  17. data/tracks/crystal/Makefile +18 -15
  18. data/tracks/crystal/README.md +5 -5
  19. data/tracks/crystal/config.json +6 -0
  20. data/tracks/crystal/exercises/acronym/src/acronym.cr +1 -0
  21. data/tracks/crystal/exercises/anagram/src/anagram.cr +1 -0
  22. data/tracks/crystal/exercises/atbash-cipher/src/atbash_cipher.cr +1 -0
  23. data/tracks/crystal/exercises/binary/src/binary.cr +1 -0
  24. data/tracks/crystal/exercises/bob/src/bob.cr +1 -0
  25. data/tracks/crystal/exercises/bracket-push/src/bracket_push.cr +1 -0
  26. data/tracks/crystal/exercises/difference-of-squares/spec/difference_of_squares_spec.cr +44 -0
  27. data/tracks/crystal/exercises/difference-of-squares/src/example.cr +15 -0
  28. data/tracks/crystal/exercises/forth/src/forth.cr +1 -0
  29. data/tracks/crystal/exercises/gigasecond/src/gigasecond.cr +1 -0
  30. data/tracks/crystal/exercises/hamming/src/hamming.cr +1 -0
  31. data/tracks/crystal/exercises/hello-world/src/hello_world.cr +1 -0
  32. data/tracks/crystal/exercises/largest-series-product/src/largest_series_product.cr +1 -0
  33. data/tracks/crystal/exercises/leap/src/leap.cr +1 -0
  34. data/tracks/crystal/exercises/pangram/src/pangram.cr +1 -0
  35. data/tracks/crystal/exercises/raindrops/src/raindrops.cr +1 -0
  36. data/tracks/crystal/exercises/react/src/react.cr +1 -0
  37. data/tracks/crystal/exercises/rna-transcription/src/rna_transcription.cr +1 -0
  38. data/tracks/crystal/exercises/roman-numerals/src/roman_numerals.cr +1 -0
  39. data/tracks/crystal/exercises/sieve/src/sieve.cr +1 -0
  40. data/tracks/crystal/src/generator/exercises/difference_of_squares.cr +39 -0
  41. data/tracks/go/exercises/allergies/allergies_test.go +2 -2
  42. data/tracks/go/exercises/anagram/anagram_test.go +3 -3
  43. data/tracks/go/exercises/grade-school/grade_school_test.go +3 -3
  44. data/tracks/go/exercises/secret-handshake/secret_handshake_test.go +1 -1
  45. data/tracks/java/config.json +13 -1
  46. data/tracks/java/exercises/binary-search-tree/build.gradle +18 -0
  47. data/tracks/java/exercises/binary-search-tree/src/example/java/BST.java +122 -0
  48. data/tracks/java/exercises/binary-search-tree/src/main/java/.keep +0 -0
  49. data/tracks/java/exercises/binary-search-tree/src/test/java/.keep +0 -0
  50. data/tracks/java/exercises/binary-search-tree/src/test/java/BSTTest.java +163 -0
  51. data/tracks/java/exercises/pythagorean-triplet/build.gradle +18 -0
  52. data/tracks/java/exercises/pythagorean-triplet/src/example/java/PythagoreanTriplet.java +117 -0
  53. data/tracks/java/exercises/pythagorean-triplet/src/main/java/PythagoreanTriplet.java +3 -0
  54. data/tracks/java/exercises/pythagorean-triplet/src/test/java/PythagoreanTripletTest.java +95 -0
  55. data/tracks/java/exercises/settings.gradle +2 -0
  56. data/tracks/julia/README.md +16 -0
  57. data/tracks/perl5/README.md +2 -0
  58. data/tracks/perl6/README.md +2 -1
  59. data/tracks/php/config.json +5 -0
  60. data/tracks/php/exercises/sieve/example.php +29 -0
  61. data/tracks/php/exercises/sieve/sieve_test.php +201 -0
  62. data/tracks/pony/.travis.yml +1 -0
  63. data/tracks/python/exercises/anagram/anagram_test.py +1 -0
  64. data/tracks/python/exercises/beer-song/beer_song_test.py +1 -0
  65. data/tracks/python/exercises/binary-search/binary_search_test.py +1 -0
  66. data/tracks/python/exercises/binary/binary_test.py +1 -0
  67. data/tracks/python/exercises/bob/bob_test.py +1 -0
  68. data/tracks/python/exercises/clock/clock_test.py +1 -0
  69. data/tracks/python/exercises/etl/etl_test.py +1 -0
  70. data/tracks/python/exercises/gigasecond/gigasecond_test.py +1 -0
  71. data/tracks/python/exercises/grains/grains_test.py +1 -0
  72. data/tracks/python/exercises/leap/leap_test.py +1 -0
  73. data/tracks/python/exercises/meetup/meetup_test.py +1 -0
  74. data/tracks/python/exercises/nucleotide-count/nucleotide_count_test.py +1 -0
  75. data/tracks/python/exercises/ocr-numbers/example.py +1 -0
  76. data/tracks/python/exercises/ocr-numbers/ocr_test.py +1 -0
  77. data/tracks/python/exercises/perfect-numbers/perfect_numbers_test.py +1 -0
  78. data/tracks/python/exercises/phone-number/phone_number_test.py +1 -0
  79. data/tracks/python/exercises/pig-latin/pig_latin_test.py +1 -0
  80. data/tracks/python/exercises/point-mutations/point_mutations_test.py +1 -0
  81. data/tracks/python/exercises/poker/poker_test.py +1 -0
  82. data/tracks/python/exercises/prime-factors/prime_factors_test.py +1 -0
  83. data/tracks/python/exercises/pythagorean-triplet/example.py +2 -3
  84. data/tracks/python/exercises/rail-fence-cipher/rail_fence_cipher_test.py +1 -0
  85. data/tracks/python/exercises/raindrops/raindrops_test.py +1 -0
  86. data/tracks/python/exercises/rectangles/rectangles_count_test.py +1 -0
  87. data/tracks/python/exercises/robot-simulator/robot_simulator_test.py +1 -0
  88. data/tracks/python/exercises/roman-numerals/roman_numerals_test.py +1 -0
  89. data/tracks/python/exercises/run-length-encoding/run_length_test.py +1 -0
  90. data/tracks/python/exercises/say/say_test.py +1 -0
  91. data/tracks/python/exercises/scrabble-score/scrabble_score_test.py +1 -0
  92. data/tracks/python/exercises/sieve/sieve_test.py +1 -0
  93. data/tracks/python/exercises/space-age/space_age_test.py +1 -0
  94. data/tracks/python/exercises/triangle/triangle_test.py +1 -0
  95. data/tracks/python/exercises/word-count/word_count_test.py +1 -0
  96. data/tracks/python/requirements-travis.txt +1 -1
  97. data/tracks/ruby/docs/24pullrequests.md +21 -0
  98. data/tracks/ruby/exercises/bowling/.version +1 -1
  99. data/tracks/ruby/exercises/bowling/bowling_test.rb +44 -15
  100. data/tracks/ruby/exercises/bowling/example.rb +10 -5
  101. data/tracks/ruby/exercises/bowling/example.tt +4 -2
  102. data/tracks/ruby/lib/bowling_cases.rb +1 -1
  103. data/tracks/scala/exercises/bank-account/HINTS.md +11 -0
  104. data/tracks/scala/exercises/bank-account/example.scala +2 -4
  105. data/tracks/scala/exercises/bank-account/src/main/scala/BankAccount.scala +13 -0
  106. data/tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala +5 -5
  107. data/tracks/scala/exercises/hamming/HINTS.md +57 -0
  108. data/tracks/scala/exercises/hello-world/HINTS.md +8 -0
  109. data/tracks/scala/exercises/nucleotide-count/HINTS.md +61 -0
  110. metadata +48 -2
@@ -3,3 +3,4 @@ language: bash
3
3
  script:
4
4
  - bin/fetch-configlet
5
5
  - bin/configlet .
6
+ sudo: false
@@ -3,3 +3,4 @@ language: bash
3
3
  script:
4
4
  - bin/fetch-configlet
5
5
  - bin/configlet .
6
+ sudo: false
@@ -1,29 +1,32 @@
1
- ASSIGNMENT ?= ""
1
+ EXERCISE ?= ""
2
2
  IGNOREDIRS := "^(\.git|.crystal|docs|bin|img|script)$$"
3
3
  EXERCISESDIR ?= "exercises"
4
4
  GENERATORDIR ?= "src/generator"
5
- ASSIGNMENTS = $(shell find exercises -maxdepth 1 -mindepth 1 -type d | cut -d'/' -f2 | sort | grep -Ev $(IGNOREDIRS))
5
+ EXERCISES = $(shell find exercises -maxdepth 1 -mindepth 1 -type d | cut -d'/' -f2 | sort | grep -Ev $(IGNOREDIRS))
6
6
 
7
- FILEEXT := "cr"
7
+ FILEEXT = "cr"
8
8
  SPECDIR = "spec"
9
- ASSIGNMENTNAME := "$(subst -,_,$(ASSIGNMENT))"
10
- EXERCISESPECDIR := $(EXERCISESDIR)/$(ASSIGNMENT)/$(SPECDIR)
11
- SPECFILE := "$(ASSIGNMENTNAME)_spec.$(FILEEXT)"
12
- TMPSPECFILE := "$(ASSIGNMENTNAME)_spec.$(FILEEXT).tmp"
9
+ EXERCISENAME := "$(subst -,_,$(EXERCISE))"
10
+ EXERCISEDIR := $(EXERCISESDIR)/$(EXERCISE)
11
+ EXERCISESPECDIR := $(EXERCISEDIR)/$(SPECDIR)
12
+ SPECFILE := "$(EXERCISENAME)_spec.$(FILEEXT)"
13
+ SUPERTMPSPECFILE := "$(SPECFILE).super.tmp"
14
+ TMPSPECFILE := "$(SPECFILE).tmp"
13
15
 
14
- test-assignment:
15
- @echo "running formatting check for: $(ASSIGNMENT)"
16
- @crystal tool format --check $(EXERCISESDIR)/$(ASSIGNMENT)
17
- @echo "moving files around"
16
+ test-exercise:
17
+ @echo "running formatting check for: $(EXERCISE)"
18
+ @crystal tool format --check $(EXERCISESDIR)/$(EXERCISE)
18
19
  @sed 's/pending/it/g' $(EXERCISESPECDIR)/$(SPECFILE) > $(EXERCISESPECDIR)/$(TMPSPECFILE)
19
- @rm $(EXERCISESPECDIR)/$(SPECFILE)
20
+ @mv $(EXERCISESPECDIR)/$(SPECFILE) $(EXERCISESPECDIR)/$(SUPERTMPSPECFILE)
20
21
  @mv $(EXERCISESPECDIR)/$(TMPSPECFILE) $(EXERCISESPECDIR)/$(SPECFILE)
21
- @echo "running tests for: $(ASSIGNMENT)"
22
- @cd $(EXERCISESDIR)/$(ASSIGNMENT) && crystal spec
22
+ @echo "running tests for: $(EXERCISE)"
23
+ @cd $(EXERCISESDIR)/$(EXERCISE) && crystal spec
24
+ @rm $(EXERCISESPECDIR)/$(SPECFILE)
25
+ @mv $(EXERCISESPECDIR)/$(SUPERTMPSPECFILE) $(EXERCISESPECDIR)/$(SPECFILE)
23
26
  @printf "\n"
24
27
 
25
28
  test:
26
- @for assignment in $(ASSIGNMENTS); do ASSIGNMENT=$$assignment $(MAKE) -s test-assignment || exit 1; done
29
+ @for exercise in $(EXERCISES); do EXERCISE=$$exercise $(MAKE) -s test-exercise || exit 1; done
27
30
  @echo "running generator tests"
28
31
  @cd $(GENERATORDIR) && crystal spec
29
32
 
@@ -4,18 +4,18 @@ Exercism problems in Crystal.
4
4
 
5
5
  ## The Tests
6
6
 
7
- ### All Assignments
7
+ ### All Exercises
8
8
 
9
- Run all assignments with:
9
+ Run all Exercises with:
10
10
  ```bash
11
11
  $ make test
12
12
  ```
13
13
 
14
- ### Single Assignment
14
+ ### Single Exercises
15
15
 
16
- Run single assignments with:
16
+ Run single Exercises with:
17
17
  ```bash
18
- $ make test-assignment ASSIGNMENT=test-folder-name
18
+ $ make test-exercise EXERCISE=exercise-name
19
19
  ```
20
20
 
21
21
  ## The Test Generator
@@ -65,6 +65,12 @@
65
65
  "topics": [
66
66
  ]
67
67
  },
68
+ {
69
+ "slug": "difference-of-squares",
70
+ "difficulty": 1,
71
+ "topics": [
72
+ ]
73
+ },
68
74
  {
69
75
  "slug": "pangram",
70
76
  "difficulty": 1,
@@ -0,0 +1 @@
1
+ # Please implement your solution to acronym in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to anagram in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to atbash-cipher in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to binary in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to bob in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to bracket-push in this file
@@ -0,0 +1,44 @@
1
+ require "spec"
2
+ require "../src/*"
3
+
4
+ describe "DifferenceOfSquares" do
5
+ it "calculates square of sum 5 is 225" do
6
+ Squares.square_of_sum(5).should eq(225)
7
+ end
8
+
9
+ it "calculates square of sum 10 is 3025" do
10
+ Squares.square_of_sum(10).should eq(3025)
11
+ end
12
+
13
+ it "calculates square of sum 100 is 25502500" do
14
+ Squares.square_of_sum(100).should eq(25502500)
15
+ end
16
+
17
+ it "calculates sum of squares 5 is 55" do
18
+ Squares.sum_of_squares(5).should eq(55)
19
+ end
20
+
21
+ it "calculates sum of squares 10 is 385" do
22
+ Squares.sum_of_squares(10).should eq(385)
23
+ end
24
+
25
+ it "calculates sum of squares 100 is 338350" do
26
+ Squares.sum_of_squares(100).should eq(338350)
27
+ end
28
+
29
+ it "calculates difference of squares 0 is 0" do
30
+ Squares.difference_of_squares(0).should eq(0)
31
+ end
32
+
33
+ it "calculates difference of squares 5 is 170" do
34
+ Squares.difference_of_squares(5).should eq(170)
35
+ end
36
+
37
+ it "calculates difference of squares 10 is 2640" do
38
+ Squares.difference_of_squares(10).should eq(2640)
39
+ end
40
+
41
+ it "calculates difference of squares 100 is 25164150" do
42
+ Squares.difference_of_squares(100).should eq(25164150)
43
+ end
44
+ end
@@ -0,0 +1,15 @@
1
+ module Squares
2
+ extend self
3
+
4
+ def square_of_sum(num)
5
+ (num * (num + 1) / 2) ** 2
6
+ end
7
+
8
+ def sum_of_squares(num)
9
+ num * (num + 1) * (2 * num + 1) / 6
10
+ end
11
+
12
+ def difference_of_squares(num)
13
+ square_of_sum(num) - sum_of_squares(num)
14
+ end
15
+ end
@@ -0,0 +1 @@
1
+ # Please implement your solution to forth in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to gigasecond in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to hamming in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to hello-world in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to largest-series-product in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to leap in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to pangram in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to raindrops in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to react in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to rna-transcription in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to roman-numerals in this file
@@ -0,0 +1 @@
1
+ # Please implement your solution to sieve in this file
@@ -0,0 +1,39 @@
1
+ require "./exercise_generator"
2
+ require "./exercise_test_case"
3
+
4
+ class DifferenceOfSquaresGenerator < ExerciseGenerator
5
+ def exercise_name
6
+ "difference-of-squares"
7
+ end
8
+
9
+ def test_cases
10
+ ["square_of_sum", "sum_of_squares", "difference_of_squares"]
11
+ .reduce(Array(ExerciseTestCase).new) do |cases, type|
12
+ cases + JSON.parse(data)[type]["cases"].map do |test_case|
13
+ DifferenceOfSquaresTestCase.new(test_case, type)
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ class DifferenceOfSquaresTestCase < ExerciseTestCase
20
+ private getter number : JSON::Any
21
+ private getter description : JSON::Any
22
+ private getter expected : JSON::Any?
23
+ private getter type : String
24
+
25
+ def initialize(test_case, type)
26
+ @type = type
27
+ @number = test_case["number"]
28
+ @description = test_case["description"]
29
+ @expected = test_case["expected"]?
30
+ end
31
+
32
+ def workload
33
+ "Squares.#{type}(#{number}).should eq(#{expected})"
34
+ end
35
+
36
+ def test_name
37
+ "calculates #{description} is #{expected}"
38
+ end
39
+ end
@@ -32,9 +32,9 @@ func TestAllergies(t *testing.T) {
32
32
  sort.Strings(actual)
33
33
  sort.Strings(test.expected)
34
34
  if fmt.Sprintf("%s", actual) != fmt.Sprintf("%s", test.expected) {
35
- t.Fatalf("FAIL: Allergies(%d): expected %s, actual %s", test.input, test.expected, actual)
35
+ t.Fatalf("FAIL: Allergies(%d): expected %q, actual %q", test.input, test.expected, actual)
36
36
  } else {
37
- t.Logf("PASS: Allergic to %v", test.expected)
37
+ t.Logf("PASS: Allergic to %q", test.expected)
38
38
  }
39
39
  }
40
40
  }
@@ -144,9 +144,9 @@ func TestDetectAnagrams(t *testing.T) {
144
144
  if !equal(tt.expected, actual) {
145
145
  msg := `FAIL: %s
146
146
  Subject %s
147
- Candidates %v
148
- Expected %v
149
- Got %v
147
+ Candidates %q
148
+ Expected %q
149
+ Got %q
150
150
  `
151
151
  t.Fatalf(msg, tt.description, tt.subject, tt.candidates, tt.expected, actual)
152
152
  } else {
@@ -88,9 +88,9 @@ func TestGetGrade(t *testing.T) {
88
88
  }
89
89
  }
90
90
  t.Errorf(`Get grade, got
91
- %v
91
+ %q
92
92
  expected
93
- %v`, got, exp)
93
+ %q`, got, exp)
94
94
  }
95
95
 
96
96
  func TestNonExistantGrade(t *testing.T) {
@@ -98,7 +98,7 @@ func TestNonExistantGrade(t *testing.T) {
98
98
  got := s.Grade(1)
99
99
  if len(got) != 0 {
100
100
  t.Errorf(`Get non-existant grade, got
101
- %v
101
+ %q
102
102
  expected
103
103
  []`, got)
104
104
  }
@@ -35,7 +35,7 @@ func TestHandshake(t *testing.T) {
35
35
  continue
36
36
  }
37
37
  if !reflect.DeepEqual(h, test.h) {
38
- t.Fatalf("Handshake(%d) = %v, want %v.", test.code, h, test.h)
38
+ t.Fatalf("Handshake(%d) = %q, want %q.", test.code, h, test.h)
39
39
  }
40
40
  }
41
41
  }
@@ -50,7 +50,9 @@
50
50
  "minesweeper",
51
51
  "series",
52
52
  "robot-simulator",
53
- "bracket-push"
53
+ "bracket-push",
54
+ "pythagorean-triplet",
55
+ "binary-search-tree"
54
56
  ],
55
57
  "exercises": [
56
58
  {
@@ -287,6 +289,16 @@
287
289
  "slug": "bracket-push",
288
290
  "difficulty": 1,
289
291
  "topics": []
292
+ },
293
+ {
294
+ "slug": "pythagorean-triplet",
295
+ "difficulty": 1,
296
+ "topics": []
297
+ },
298
+ {
299
+ "slug": "binary-search-tree",
300
+ "difficulty": 1,
301
+ "topics": []
290
302
  }
291
303
  ],
292
304
  "deprecated": [
@@ -0,0 +1,18 @@
1
+ apply plugin: "java"
2
+ apply plugin: "eclipse"
3
+ apply plugin: "idea"
4
+
5
+ repositories {
6
+ mavenCentral()
7
+ }
8
+
9
+ dependencies {
10
+ testCompile "junit:junit:4.12"
11
+ }
12
+
13
+ test {
14
+ testLogging {
15
+ exceptionFormat = 'full'
16
+ events = ["passed", "failed", "skipped"]
17
+ }
18
+ }
@@ -0,0 +1,122 @@
1
+
2
+ import java.util.ArrayList;
3
+ import java.util.Collections;
4
+ import java.util.LinkedList;
5
+ import java.util.List;
6
+ import java.util.Queue;
7
+
8
+ public class BST<T extends Comparable<T>> {
9
+
10
+ public static class Node<T> {
11
+
12
+ private T data;
13
+ private Node<T> left = null;
14
+ private Node<T> right = null;
15
+
16
+ public Node(T data) {
17
+ this.data = data;
18
+ }
19
+
20
+ public Node<T> getLeft() {
21
+ return left;
22
+ }
23
+
24
+ public void setLeft(Node<T> left) {
25
+ this.left = left;
26
+ }
27
+
28
+ public Node<T> getRight() {
29
+ return right;
30
+ }
31
+
32
+ public void setRight(Node<T> right) {
33
+ this.right = right;
34
+ }
35
+
36
+ public T getData() {
37
+ return data;
38
+ }
39
+
40
+ }
41
+
42
+ private Node<T> root;
43
+
44
+ private int nodeCount = 0;
45
+
46
+ public void insert(T value) {
47
+ if (root == null) {
48
+ root = new Node<>(value);
49
+ } else {
50
+ this.insert(this.root, value);
51
+ }
52
+ this.nodeCount++;
53
+ }
54
+
55
+ public List<T> getAsSortedList() {
56
+ List<T> result = new ArrayList<>(this.nodeCount);
57
+ this.putInSortedOrderToList(this.root, result);
58
+ return Collections.unmodifiableList(result);
59
+ }
60
+
61
+ public List<T> getAsLevelOrderList() {
62
+ List<T> result = new ArrayList<>(this.nodeCount);
63
+ this.putInLevelOrderToList(this.root, result);
64
+ return Collections.unmodifiableList(result);
65
+ }
66
+
67
+ public Node<T> getRoot() {
68
+ return root;
69
+ }
70
+
71
+ private void insert(Node<T> node, T value) {
72
+ if (value.compareTo(node.getData()) <= 0) {
73
+ if (node.getLeft() == null) {
74
+ node.setLeft(new Node<T>(value));
75
+ } else {
76
+ insert(node.getLeft(), value);
77
+ }
78
+ } else {
79
+ if (node.getRight() == null) {
80
+ node.setRight(new Node<T>(value));
81
+ } else {
82
+ insert(node.getRight(), value);
83
+ }
84
+ }
85
+ }
86
+
87
+ private void putInSortedOrderToList(Node<T> node, List<T> list) {
88
+ if (node == null || list == null) {
89
+ return;
90
+ }
91
+ if (node.getLeft() != null) {
92
+ putInSortedOrderToList(node.getLeft(), list);
93
+ }
94
+ list.add(node.getData());
95
+ if (node.getRight() != null) {
96
+ putInSortedOrderToList(node.getRight(), list);
97
+ }
98
+ }
99
+
100
+ private void putInLevelOrderToList(Node<T> node, List<T> list) {
101
+ if (node == null || list == null) {
102
+ return;
103
+ }
104
+ final Queue<Node<T>> queue = new LinkedList<>();
105
+ Node<T> myNode;
106
+ Node<T> left;
107
+ Node<T> right;
108
+ queue.add(node);
109
+ while (!queue.isEmpty()) {
110
+ myNode = queue.poll();
111
+ list.add(myNode.getData());
112
+ left = myNode.getLeft();
113
+ right = myNode.getRight();
114
+ if (left != null) {
115
+ queue.add(left);
116
+ }
117
+ if (right != null) {
118
+ queue.add(right);
119
+ }
120
+ }
121
+ }
122
+ }