class TreeNode:
def __init__(self, key):
self.left = None
self.right = None
self.val = key
class BinaryTree:
def __init__(self):
self.root = None
def insert(self, key):
if self.root is None:
self.root = TreeNode(key)
else:
self._insert(self.root, key)
def _insert(self, node, key):
if key < node.val:
if node.left is None:
node.left = TreeNode(key)
else:
self._insert(node.left, key)
else:
if node.right is None:
node.right = TreeNode(key)
else:
self._insert(node.right, key)
def inorder(self, node):
if node:
self.inorder(node.left)
print(node.val, end=' ')
self.inorder(node.right)
def preorder(self, node):
if node:
print(node.val, end=' ')
self.preorder(node.left)
self.preorder(node.right)
def postorder(self, node):
if node:
self.postorder(node.left)
self.postorder(node.right)
print(node.val, end=' ')
if __name__ == "__main__":
tree = BinaryTree()
tree.insert(50)
tree.insert(30)
tree.insert(20)
tree.insert(40)
tree.insert(70)
tree.insert(60)
tree.insert(80)
print("中序遍历:")
tree.inorder(tree.root)
print("\n前序遍历:")
tree.preorder(tree.root)
print("\n后序遍历:")
tree.postorder(tree.root)