Skip to content

Instantly share code, notes, and snippets.

@gocs
Created April 4, 2023 15:05
Show Gist options
  • Save gocs/b3fbc519c6c657adaf8909567ead3fac to your computer and use it in GitHub Desktop.
Save gocs/b3fbc519c6c657adaf8909567ead3fac to your computer and use it in GitHub Desktop.
import sys
class BinTree():
def __init__(self, value):
self.__value = value
self.__left = None
self.__right = None
def value(self):
return self.__value
def left(self):
self = self.__left
def right(self):
self = self.__right
def append(self, bt):
if self.__value <= bt.__value:
if self.__right != None:
self.__right.append(bt)
else:
self.__right = bt
return
else:
if self.__left != None:
self.__left.append(bt)
else:
self.__left = bt
return
def next(self, fn, order=-1):
if fn == None:
return
if order == -1:
fn(self.__value)
if self.__left != None:
self.__left.next(fn, order)
if order == 0:
fn(self.__value)
if self.__right != None:
self.__right.next(fn, order)
if order == 1:
fn(self.__value)
if __name__ == "__main__":
bt = BinTree(54)
bt.append(BinTree(7))
bt.append(BinTree(40))
bt.append(BinTree(10))
bt.append(BinTree(123))
bt.append(BinTree(4))
try:
order = sys.argv[1]
except:
order = 0
if not (order in ["-1", "0", "1"]):
order = 0
order = int(order)
bt.next(lambda v: print(f"value: %s" % v), order=order)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment