class Node {
int data;
Node left, right;
public Node(int item) {
data = item;
left = right = null;
}
}
class BinaryTree {
Node root;
BinaryTree() {
root = null;
}
void insert(int data) {
root = insertRec(root, data);
}
Node insertRec(Node root, int data) {
if (root == null) {
root = new Node(data);
return root;
}
if (data < root.data)
root.left = insertRec(root.left, data);
else if (data > root.data)
root.right = insertRec(root.right, data);
return root;
}
void preOrder(Node node) {
if (node != null) {
System.
out.
print(node.
data + " "); preOrder(node.left);
preOrder(node.right);
}
}
// Método para imprimir a árvore binária de forma gráfica
void printTree(Node root, int nivel) {
if (root != null) {
printTree(root.right, nivel + 1);
for (int i = 0; i < nivel; i++)
System.
out.
println(root.
data); printTree(root.left, nivel + 1);
}
}
public static void main
(String[] args
) { BinaryTree tree = new BinaryTree();
int[] values = {11, 6, 8, 19, 4, 10, 5, 17, 43, 49, 31};
for (int value : values) {
tree.insert(value);
}
System.
out.
println("Árvore Binária de Busca em pré-ordem:"); tree.preOrder(tree.root);
System.
out.
println("\nÁrvore Binária de Busca:"); tree.printTree(tree.root, 0);
}
}
Y2xhc3MgTm9kZSB7CiAgICBpbnQgZGF0YTsKICAgIE5vZGUgbGVmdCwgcmlnaHQ7CgogICAgcHVibGljIE5vZGUoaW50IGl0ZW0pIHsKICAgICAgICBkYXRhID0gaXRlbTsKICAgICAgICBsZWZ0ID0gcmlnaHQgPSBudWxsOwogICAgfQp9CgpjbGFzcyBCaW5hcnlUcmVlIHsKICAgIE5vZGUgcm9vdDsKCiAgICBCaW5hcnlUcmVlKCkgewogICAgICAgIHJvb3QgPSBudWxsOwogICAgfQoKICAgIHZvaWQgaW5zZXJ0KGludCBkYXRhKSB7CiAgICAgICAgcm9vdCA9IGluc2VydFJlYyhyb290LCBkYXRhKTsKICAgIH0KCiAgICBOb2RlIGluc2VydFJlYyhOb2RlIHJvb3QsIGludCBkYXRhKSB7CiAgICAgICAgaWYgKHJvb3QgPT0gbnVsbCkgewogICAgICAgICAgICByb290ID0gbmV3IE5vZGUoZGF0YSk7CiAgICAgICAgICAgIHJldHVybiByb290OwogICAgICAgIH0KCiAgICAgICAgaWYgKGRhdGEgPCByb290LmRhdGEpCiAgICAgICAgICAgIHJvb3QubGVmdCA9IGluc2VydFJlYyhyb290LmxlZnQsIGRhdGEpOwogICAgICAgIGVsc2UgaWYgKGRhdGEgPiByb290LmRhdGEpCiAgICAgICAgICAgIHJvb3QucmlnaHQgPSBpbnNlcnRSZWMocm9vdC5yaWdodCwgZGF0YSk7CgogICAgICAgIHJldHVybiByb290OwogICAgfQoKICAgIHZvaWQgcHJlT3JkZXIoTm9kZSBub2RlKSB7CiAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KG5vZGUuZGF0YSArICIgIik7CiAgICAgICAgICAgIHByZU9yZGVyKG5vZGUubGVmdCk7CiAgICAgICAgICAgIHByZU9yZGVyKG5vZGUucmlnaHQpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gTcOpdG9kbyBwYXJhIGltcHJpbWlyIGEgw6Fydm9yZSBiaW7DoXJpYSBkZSBmb3JtYSBncsOhZmljYQogICAgdm9pZCBwcmludFRyZWUoTm9kZSByb290LCBpbnQgbml2ZWwpIHsKICAgICAgICBpZiAocm9vdCAhPSBudWxsKSB7CiAgICAgICAgICAgIHByaW50VHJlZShyb290LnJpZ2h0LCBuaXZlbCArIDEpOwogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5pdmVsOyBpKyspCiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIgICAiKTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHJvb3QuZGF0YSk7CiAgICAgICAgICAgIHByaW50VHJlZShyb290LmxlZnQsIG5pdmVsICsgMSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBCaW5hcnlUcmVlIHRyZWUgPSBuZXcgQmluYXJ5VHJlZSgpOwogICAgICAgIGludFtdIHZhbHVlcyA9IHsxMSwgNiwgOCwgMTksIDQsIDEwLCA1LCAxNywgNDMsIDQ5LCAzMX07CiAgICAgICAgCiAgICAgICAgZm9yIChpbnQgdmFsdWUgOiB2YWx1ZXMpIHsKICAgICAgICAgICAgdHJlZS5pbnNlcnQodmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCLDgXJ2b3JlIEJpbsOhcmlhIGRlIEJ1c2NhIGVtIHByw6ktb3JkZW06Iik7CiAgICAgICAgdHJlZS5wcmVPcmRlcih0cmVlLnJvb3QpOwogICAgICAgIAogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXG7DgXJ2b3JlIEJpbsOhcmlhIGRlIEJ1c2NhOiIpOwogICAgICAgIHRyZWUucHJpbnRUcmVlKHRyZWUucm9vdCwgMCk7CiAgICB9Cn0K