Add Tree building
This commit is contained in:
49
src/Tree.java
Normal file
49
src/Tree.java
Normal file
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* Created by azael on 20/03/17.
|
||||
*/
|
||||
public class Tree {
|
||||
|
||||
private Node root;
|
||||
private String exp;
|
||||
|
||||
Tree (String exp){
|
||||
this.exp = exp;
|
||||
root = tree(0);
|
||||
}
|
||||
|
||||
private Node tree(int pos) {
|
||||
char item = exp.charAt(pos);
|
||||
|
||||
if(Expression.isOperator(item)) {
|
||||
if (item == '!'){
|
||||
Node fils = tree(pos+1);
|
||||
Node f = new Node(null, fils, null, item, 1+fils.getLvl());
|
||||
fils.setFather(f);
|
||||
return f;
|
||||
}
|
||||
|
||||
Node filsG = tree(pos+1);
|
||||
Node filsD = tree(pos+filsG.getLvl());
|
||||
Node f = new Node(null, filsG, filsD, item, filsG.getLvl() + filsD.getLvl()+1);
|
||||
filsG.setFather(f);
|
||||
filsD.setFather(f);
|
||||
return f;
|
||||
} else {
|
||||
return new Node(null, null, null, item, 1);
|
||||
}
|
||||
}
|
||||
|
||||
public void display () {
|
||||
displayNode(root,0);
|
||||
}
|
||||
|
||||
private void displayNode(Node n, int lvl){
|
||||
for (int i = 0; i < lvl; i++)
|
||||
System.out.print("-");
|
||||
n.display();
|
||||
if (n.getLeftChild() != null)
|
||||
displayNode(n.getLeftChild(),lvl+1);
|
||||
if (n.getRigthChild() != null)
|
||||
displayNode(n.getRigthChild(),lvl+1);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user