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);
}
}
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);
}
}
Y2xhc3MgTm9kZSB7CiAgICBpbnQgZGF0YTsKICAgIE5vZGUgbGVmdCwgcmlnaHQ7CgogICAgcHVibGljIE5vZGUoaW50IGl0ZW0pIHsKICAgICAgICBkYXRhID0gaXRlbTsKICAgICAgICBsZWZ0ID0gcmlnaHQgPSBudWxsOwogICAgfQp9CgpjbGFzcyBCaW5hcnlUcmVlIHsKICAgIE5vZGUgcm9vdDsKCiAgICBCaW5hcnlUcmVlKCkgewogICAgICAgIHJvb3QgPSBudWxsOwogICAgfQoKICAgIHZvaWQgaW5zZXJ0KGludCBkYXRhKSB7CiAgICAgICAgcm9vdCA9IGluc2VydFJlYyhyb290LCBkYXRhKTsKICAgIH0KCiAgICBOb2RlIGluc2VydFJlYyhOb2RlIHJvb3QsIGludCBkYXRhKSB7CiAgICAgICAgaWYgKHJvb3QgPT0gbnVsbCkgewogICAgICAgICAgICByb290ID0gbmV3IE5vZGUoZGF0YSk7CiAgICAgICAgICAgIHJldHVybiByb290OwogICAgICAgIH0KCiAgICAgICAgaWYgKGRhdGEgPCByb290LmRhdGEpCiAgICAgICAgICAgIHJvb3QubGVmdCA9IGluc2VydFJlYyhyb290LmxlZnQsIGRhdGEpOwogICAgICAgIGVsc2UgaWYgKGRhdGEgPiByb290LmRhdGEpCiAgICAgICAgICAgIHJvb3QucmlnaHQgPSBpbnNlcnRSZWMocm9vdC5yaWdodCwgZGF0YSk7CgogICAgICAgIHJldHVybiByb290OwogICAgfQoKICAgIHZvaWQgcHJlT3JkZXIoTm9kZSBub2RlKSB7CiAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KG5vZGUuZGF0YSArICIgIik7CiAgICAgICAgICAgIHByZU9yZGVyKG5vZGUubGVmdCk7CiAgICAgICAgICAgIHByZU9yZGVyKG5vZGUucmlnaHQpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgQmluYXJ5VHJlZSB0cmVlID0gbmV3IEJpbmFyeVRyZWUoKTsKICAgICAgICBpbnRbXSB2YWx1ZXMgPSB7MTEsIDYsIDgsIDE5LCA0LCAxMCwgNSwgMTcsIDQzLCA0OSwgMzF9OwogICAgICAgIAogICAgICAgIGZvciAoaW50IHZhbHVlIDogdmFsdWVzKSB7CiAgICAgICAgICAgIHRyZWUuaW5zZXJ0KHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiw4Fydm9yZSBCaW7DoXJpYSBkZSBCdXNjYSBlbSBwcsOpLW9yZGVtOiIpOwogICAgICAgIHRyZWUucHJlT3JkZXIodHJlZS5yb290KTsKICAgIH0KfQo=