Add Tree building

This commit is contained in:
Azael
2017-03-20 23:34:29 +01:00
parent b75156a4d4
commit 9a24fe6356
3 changed files with 113 additions and 4 deletions

49
src/Tree.java Normal file
View 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);
}
}