1. 程式人生 > 其它 >Python實現一個二叉樹

Python實現一個二叉樹

技術標籤:python連結串列資料結構

class BinaryTree(object):
    
    def __init__(self, node):
        self.val = node
        self.left = None
        self.right = None
        
    def insertleft(self, node):
        self.left = BinaryTree(node)
        return self.left
    
    def insertright(self, node):
        self.right = BinaryTree(node)
        return self.right
    
    def show(self):
        print(self.val, end = ' ')
        
def preOrder(tree):
    if tree.val:
        tree.show()
        if tree.left:
            preOrder(tree.left)
        if tree.right:
            preOrder(tree.right)

def inOrder(tree):
    if tree.val:
        if tree.left:
            inOrder(tree.left)
        tree.show()
        if tree.right:
            inOrder(tree.right)

def postOrder(tree):
    if tree.val:
        if tree.left:
            postOrder(tree.left)
        if tree.right:
            postOrder(tree.right)
        tree.show()
        
if __name__ == '__main__':
    tree = BinaryTree('Root')
    A = tree.insertleft('A')
    B = tree.insertright('B')
    C = A.insertleft('C')
    D = A.insertright('D')
    E = B.insertleft('E')
    F = B.insertright('F')
    G = C.insertleft('G')
    print('*************************')
    print('Binary Tree pre-traversal:')
    preOrder(tree)
    print('\n')
    print('*************************')
    print('Binary Tree mid-traversal:')
    inOrder(tree)
    print('\n')
    print('*************************')
    print('Binary Tree post-traversal:')
    postOrder(tree)
    print('\n')