class Node:
def __init__(self, key):
self.left = None
self.right = None
self.data = key
def search(root, key):
if root is None:
return False
elif root.data == key:
return True
elif root.data > key:
return search(root.left, key)
else:
return search(root.right, key)
def insert(root, val):
if root is None:
print("added to BST: ", val)
return Node(val)
elif root.data > val:
root.left = insert(root.left, val)
elif root.data < val:
root.right = insert(root.right, val)
return root
def inorder(root):
if root.left is not None:
inorder(root.left)
print(root.data, end = " ")
if root.right is not None:
inorder(root.right)
def preorder(root):
print(root.data, end = " ")
if root.left is not None:
preorder(root.left)
if root.right is not None:
preorder(root.right)
def main():
vec = [ 55, 22, 11, 22, 0, 33, 44, 555, 101, -101 ]
print( vec )
root = Node(-1 )
for i in vec:
insert( root, i )
print("Inorder traversal:", end = " ")
inorder(root)
print()
print("Preorder traversal:", end = " ")
preorder(root)
key = -101
r = search(root, key)
print()
if r is True:
print("%d is Found" % key)
else:
print("%d Not Found" % key)
main()
Y2xhc3MgTm9kZToKCiAgICBkZWYgX19pbml0X18oc2VsZiwga2V5KToKCiAgICAgICAgc2VsZi5sZWZ0ID0gTm9uZQoKICAgICAgICBzZWxmLnJpZ2h0ID0gTm9uZQoKICAgICAgICBzZWxmLmRhdGEgPSBrZXkKCmRlZiBzZWFyY2gocm9vdCwga2V5KToKCiAgICBpZiByb290IGlzIE5vbmU6CgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIGVsaWYgcm9vdC5kYXRhID09IGtleToKCiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBlbGlmIHJvb3QuZGF0YSA+IGtleToKCiAgICAgICAgcmV0dXJuIHNlYXJjaChyb290LmxlZnQsIGtleSkKCiAgICBlbHNlOgogICAgICAgIHJldHVybiBzZWFyY2gocm9vdC5yaWdodCwga2V5KQoKZGVmIGluc2VydChyb290LCB2YWwpOgoKICAgIGlmIHJvb3QgaXMgTm9uZToKCiAgICAgICAgcHJpbnQoImFkZGVkIHRvIEJTVDogIiwgdmFsKQoKICAgICAgICByZXR1cm4gTm9kZSh2YWwpCgogICAgZWxpZiByb290LmRhdGEgPiB2YWw6CgogICAgICAgIHJvb3QubGVmdCA9IGluc2VydChyb290LmxlZnQsIHZhbCkKCiAgICBlbGlmIHJvb3QuZGF0YSA8IHZhbDoKCiAgICAgICAgcm9vdC5yaWdodCA9IGluc2VydChyb290LnJpZ2h0LCB2YWwpCgogICAgcmV0dXJuIHJvb3QKCmRlZiBpbm9yZGVyKHJvb3QpOgoKICAgIGlmIHJvb3QubGVmdCBpcyBub3QgTm9uZToKCiAgICAgICAgaW5vcmRlcihyb290LmxlZnQpCgogICAgcHJpbnQocm9vdC5kYXRhLCBlbmQgPSAiICIpCgogICAgaWYgcm9vdC5yaWdodCBpcyBub3QgTm9uZToKCiAgICAgICAgaW5vcmRlcihyb290LnJpZ2h0KQoKZGVmIHByZW9yZGVyKHJvb3QpOgoKICAgIHByaW50KHJvb3QuZGF0YSwgZW5kID0gIiAiKQoKICAgIGlmIHJvb3QubGVmdCBpcyBub3QgTm9uZToKCiAgICAgICAgcHJlb3JkZXIocm9vdC5sZWZ0KQoKICAgIGlmIHJvb3QucmlnaHQgaXMgbm90IE5vbmU6CgogICAgICAgIHByZW9yZGVyKHJvb3QucmlnaHQpCgpkZWYgbWFpbigpOgoKICAgIHZlYyA9IFsgNTUsIDIyLCAxMSwgMjIsIDAsIDMzLCA0NCwgNTU1LCAxMDEsIC0xMDEgXQoKICAgIHByaW50KCB2ZWMgKQoKICAgIHJvb3QgPSBOb2RlKC0xICkKCiAgICBmb3IgaSBpbiB2ZWM6CgogICAgICAgIGluc2VydCggcm9vdCwgaSApCgoKICAgIHByaW50KCJJbm9yZGVyIHRyYXZlcnNhbDoiLCBlbmQgPSAiICIpCgogICAgaW5vcmRlcihyb290KQoKICAgIHByaW50KCkKCiAgICBwcmludCgiUHJlb3JkZXIgdHJhdmVyc2FsOiIsIGVuZCA9ICIgIikKCiAgICBwcmVvcmRlcihyb290KQoKICAgIGtleSA9IC0xMDEKICAgIHIgPSBzZWFyY2gocm9vdCwga2V5KQoKICAgIHByaW50KCkKCiAgICBpZiByIGlzIFRydWU6CgogICAgICAgIHByaW50KCIlZCBpcyBGb3VuZCIgJSBrZXkpCgogICAgZWxzZToKCiAgICAgICAgcHJpbnQoIiVkIE5vdCBGb3VuZCIgJSBrZXkpCm1haW4oKQo=
[55, 22, 11, 22, 0, 33, 44, 555, 101, -101]
added to BST: 55
added to BST: 22
added to BST: 11
added to BST: 0
added to BST: 33
added to BST: 44
added to BST: 555
added to BST: 101
added to BST: -101
Inorder traversal: -101 -1 0 11 22 33 44 55 101 555
Preorder traversal: -1 -101 55 22 11 0 33 44 555 101
-101 is Found