-
Notifications
You must be signed in to change notification settings - Fork 0
/
Tree.java
93 lines (54 loc) · 1.45 KB
/
Tree.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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
public class Tree {
//_____Class Variables_____//
public Node root;
//_____Class Variables_____//
//Constructor.
public Tree(Node root)
{
this.root = root;
}
//====================Get Node Method====================//
public Node getNode(char path, Node start_node)
{
/*This method returns the next node which the path shows.*/
//Return the left node.
if (path == '0')
return start_node.getLeft();
//Return the right node.
else
return start_node.getRight();
}
//====================Get Node Method====================//
//====================Get Code Method====================//
public String getCode(char c)
{
Node currNode = this.root; //Current node.
String s = ""+c; //Char to string.
String code = ""; //Char sequence.
//Loop until you find a leaf.
while ( !currNode.isLeaf() )
{
//Go left.
if ( currNode.getL().contains(s) )
{
currNode = currNode.getLeft();
code += "0"; //Add a 0 in the sequence.
}
//Go right.
else if ( currNode.getR().contains(s) )
{
currNode = currNode.getRight();
code += "1"; //Add a 1 in the sequence.
}
//Error occurred.
else
{
System.out.println("Coding Failed:\nThe character: \""+c+"\" , could not been identified!");
return null;
}
}
//Return the code.
return code;
}
//====================Get Code Method====================//
}