-
Notifications
You must be signed in to change notification settings - Fork 0
/
MorseTreeNode.java
45 lines (39 loc) · 1.69 KB
/
MorseTreeNode.java
1
2
3
4
5
6
7
8
9
10
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
38
39
40
41
42
43
44
45
public class MorseTreeNode{
public char letter;
public MorseTreeNode right;
public MorseTreeNode left;
public MorseTreeNode(char letter) {//default constructor if no subtrees given (mostly for 6th level nodes)
this(letter, null, null);
}
public MorseTreeNode(char letter, MorseTreeNode left, MorseTreeNode right) {
this.letter = letter;
this.left = left;
this.right = right;
}
public void findLetterPath(MorseTreeNode begin, String code, int index)//executes private methods below
{
System.out.println("\nCorresponding letter or number: " + findLetter(findLetterPath2(begin, code, index)));//prints out the final translation
}
private MorseTreeNode findLetterPath2(MorseTreeNode begin, String code, int index)
{
if(index < code.length())//will continue for as long as there are characters to use in the code to traverse the tree (one character per recursion)
{
if(code.charAt(index) == '.')//if the character is a dot, will go down towards the right
{
return findLetterPath2(begin.right, code, index+1);//index up by one so it will check the next character in the code
}
else//if it is a dash, will go down towards the left
{
return findLetterPath2(begin.left, code, index+1);
}
}
else//if the index reaches the end, it will simply return whatever node findLetterPath2 is currently using (as that is the one we are looking for)
{
return begin;
}
}
private char findLetter(MorseTreeNode nodeWithLetter)//uses the MorseTreeNode from findLetterPath2 for printing the translated morse code
{
return nodeWithLetter.letter;//returns whatever the char is at that node to the findLetterPath method
}
}