Alsoo ich muss gestehen, dass ich mich mit Rekursion immernoch nicht angefreundet habe xD
Ich möchte gerne zur Übung mir alle Knoten eines Binär Baums in Pre-Order Reihenfolge ausgeben lassen und ich möchte eine Methode implementieren welche alle Blätter zählt. Beide Methoden müssen Rekusiv sein und sollen keine neuen Instanzvariablen implementieren.
Ich habe es bis jetzt so, jedoch erfüllt es meine Anforderung nur bedingt, da ich einmal einen Counter als Instanzvariable habe und einmal den StringBuilder.
Ich möchte gerne zur Übung mir alle Knoten eines Binär Baums in Pre-Order Reihenfolge ausgeben lassen und ich möchte eine Methode implementieren welche alle Blätter zählt. Beide Methoden müssen Rekusiv sein und sollen keine neuen Instanzvariablen implementieren.
Ich habe es bis jetzt so, jedoch erfüllt es meine Anforderung nur bedingt, da ich einmal einen Counter als Instanzvariable habe und einmal den StringBuilder.
Java:
public class Tree {
public TreeNode root;
public Tree() {
root = null;
}
private int counter;
public int countLeaves() {
counter = 0;
counter(root);
return counter;
}
private void counter(TreeNode node) {
if(node == null) {
return;
}
if(node.left == null && node.right == null) {
counter++;
return;
}
counter(node.left);
counter(node.right);
}
private StringBuilder sb = new StringBuilder();
public String toString() {
sb.setLength(0);
preOrder(root);
return sb.toString();
}
public void preOrder(TreeNode node){
if(node == null) {
return;
}
sb.append(node.data + " ");
preOrder(node.left);
preOrder(node.right);
}
}
Java:
public class TreeNode {
public int data;
public TreeNode left;
public TreeNode right;
public TreeNode parent;
public TreeNode(int data) {
this.data = data;
left = right = parent = null;
}
}
Java:
public class TestTree {
public static void main(String[] args) {
Tree t = new Tree();
t.root = new TreeNode(5);
t.root.left = new TreeNode(3);
t.root.left.left = new TreeNode(2);
t.root.left.right = new TreeNode(4);
t.root.right = new TreeNode(8);
t.root.right.left = new TreeNode(7);
t.root.right.right = new TreeNode(10);
System.out.println(t.toString());
System.out.println(t.countLeaves());
}
}