class Tree:
def __init__(self, ist):
if not isinstance(ist, tuple) and not isinstance(ist, list) and not isinstance(ist, set):
raise ValueError
if len(ist) > 3:
raise ValueError
data = list(ist)
length = 3 - len(ist)
self.node, self.__left, self.__right = data + [None] * length
@property
def left_node(self):
if isinstance(self.__left, tuple) or isinstance(self.__left, list) or isinstance(self.__left, set):
return Tree(self.__left)
return self.__left
@property
def right_node(self):
if isinstance(self.__right, tuple) or isinstance(self.__right, list) or isinstance(self.__right, set):
return Tree(self.__right)
return self.__right
def pre_order_traverse(tree: Tree):
if isinstance(tree, Tree):
if tree.node is None:
return
print(tree.node)
pre_order_traverse(tree.left_node)
pre_order_traverse(tree.right_node)
else:
if tree is not None:
print(tree)
return
def mid_order_traverse(tree: Tree):
if isinstance(tree, Tree):
if tree.node is None:
return
mid_order_traverse(tree.left_node)
print(tree.node)
mid_order_traverse(tree.right_node)
else:
if tree is not None:
print(tree)
return
def back_order_traverse(tree: Tree):
if isinstance(tree, Tree):
if tree.node is None:
return
back_order_traverse(tree.left_node)
back_order_traverse(tree.right_node)
print(tree.node)
else:
if tree is not None:
print(tree)
return
if __name__ == '__main__':
obj = Tree(['-', ['+', 'a', ['*', 'b', ['-', 'c', 'd']]], ['/', 'e', 'f']])
back_order_traverse(obj)
Python 二叉樹
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.