Если вы работаете с деревьями, один из самых полезных способов реализации - это простой способ его распечатать, в следующем моем решении вывести дерево на Java:
public void printTree(NodeRB tree, String indent, boolean print_leaf) {
if(tree == NILL) {
System.out.print((print_leaf?indent+" |-+*\n":""));
} else {
indent += " ";
if(tree.p == NILL || tree.p == null) {
printTree(tree.right, indent + " ", print_leaf);
System.out.print(indent + "+" + tree.value + "\n");
printTree(tree.left, indent + " ", print_leaf);
}else if(tree.p.right==tree) {
printTree(tree.right, indent + " ", print_leaf);
System.out.print(indent + "|+" + tree.value + "\n");
printTree(tree.left, indent + "|", print_leaf);
}
else {
printTree(tree.right, indent + "|", print_leaf);
System.out.print(indent + "|+" + tree.value + "\n");
printTree(tree.left, indent + " ", print_leaf);
}
}
}
У кого-то есть предложения по его улучшению?