private void Insert(BaumElement aktuelleWurzel, BaumElement element) { if (element.value <= aktuelleWurzel.value) { if (aktuelleWurzel.left == null) { aktuelleWurzel.left = element; } else { Insert(aktuelleWurzel.left, element); } } else { if (aktuelleWurzel.right == null) { aktuelleWurzel.right = element; } else { Insert(aktuelleWurzel.right, element); } } }
public bool Contains(int a) { BaumElement curr = wurzel; while (curr != null) { if (curr.value == a) { return(true); } else { if (a <= curr.value) { curr = curr.left; } else { curr = curr.right; } } } return(false); }
private void PrintPreOrder(BaumElement wurzel) { if (wurzel != null) { Console.Write(wurzel.value + " "); PrintPreOrder(wurzel.left); PrintPreOrder(wurzel.right); } }
private void Print(BaumElement wurzel) { if (wurzel != null) { Console.Write("("); Print(wurzel.left); Console.Write("," + wurzel.value + ","); Print(wurzel.right); Console.Write(")"); } else { Console.Write("n"); } }
private BaumElement DeleteValueRecursive(BaumElement wurzel, int a) { if (wurzel == null) { return(wurzel); } if (wurzel.value > a) { wurzel.left = DeleteValueRecursive(wurzel.left, a); } else if (wurzel.value < a) { wurzel.right = DeleteValueRecursive(wurzel.right, a); } else // wurzel == a { if (wurzel.left == null && wurzel.right == null) // keine Nachfolger { wurzel = null; return(wurzel); } else if (wurzel.left == null) // Rechter Nachfolger { wurzel = wurzel.right; } else if (wurzel.right == null) // Linker Nachfolger { wurzel = wurzel.left; } else // Zwei Nachfolger { BaumElement min = wurzel.right; while (min.left != null) { min = min.left; } wurzel.value = min.value; wurzel.right = DeleteValueRecursive(wurzel.right, min.value); } } return(wurzel); }
private void DeleteTree(BaumElement wurzel) { if (wurzel != null) { if (wurzel.left != null) { DeleteTree(wurzel.left); } if (wurzel.right != null) { DeleteTree(wurzel.right); } wurzel = null; } }
public void Insert(int a) { BaumElement element = new BaumElement(); element.value = a; element.left = null; element.right = null; if (wurzel == null) { wurzel = element; } else { Insert(wurzel, element); } }
public SuchBaum() { wurzel = null; }
public void DeleteValueIterative(BaumElement wurzel, int a) { BaumElement curr = wurzel; BaumElement pre = curr; bool left = true; while (curr != null) { if (curr.value == a) { if (curr.left == null && curr.right == null) // kein Nachfolger { curr = null; } else if (curr.left == null && curr.right != null) // ein Nachfolger rechts { curr = curr.right; } else if (curr.left != null && curr.right == null) // ein Nachfolger links { curr = curr.left; } else // zwei Nachfolger { BaumElement smallest = curr.left; BaumElement tmp = curr; while (smallest.left != null) { smallest = smallest.left; } curr = smallest; DeleteValueIterative(tmp, smallest.value); curr.right = tmp.right; curr.left = tmp.left; smallest = null; } if (left) { pre.left = curr; } else { pre.right = curr; } } else { if (a <= curr.value) { pre = curr; curr = curr.left; left = true; } else { pre = curr; curr = curr.right; left = false; } } } }