Mam do wygenerowania drzewo z 01[A]01[G]01[C]1[T] gdzie 0 oznacza węzeł wewnętrzny, a 1 liść. Wygląd drzewa w załączniku.
public class Sign {
private Character character;
private Double probability;
private Double unitOfInformation;
private Integer occurrences;
class Node {
private Sign sign;
private Node left;
private Node right;
}
Próbowałem to zrobić w ten sposób ale już nie mam pomysłu jak mogę to zrobić
public Node getHuffmanTree(String treeCode){
Node node=new Node();
traverseeHuffmanTree(treeCode,node,node);
traversePreOrder2(node);
return node;
}
public void traverseeHuffmanTree(String treeCode,Node node,Node root) {
if(!treeCode.isEmpty()) {
if(treeCode.charAt(0)=='0') {
node.setLeft(new Node());
traverseeHuffmanTree(treeCode.substring(1), node.getLeft(),root);
}else if(treeCode.charAt(0)=='1') {
node.setRight(new Node());
traverseeHuffmanTree(treeCode.substring(1), node.getRight(),root);
}else if(treeCode.charAt(0)=='[' || treeCode.charAt(0)==']'){
traverseeHuffmanTree(treeCode.substring(1), node,root);
}else if(treeCode.charAt(0)!='[' && treeCode.charAt(0)!=']') {
Sign sign=new Sign();
sign.setCharacter(treeCode.charAt(0));
treeCode=treeCode.substring(1);
node.setSign(sign);
traverseeHuffmanTree(treeCode,root,root);
}
}
}