python手動建樹並(先/中/後)序遍歷二叉樹

先序遍歷、中序遍歷、後序遍歷簡介

先序遍歷的次序是:如果二叉樹不爲空,則訪問根節點,然後訪問左子樹,最後訪問右子樹;否則,程序退出。
中序遍歷的次序是:如果二叉樹不爲空,,先訪問左子樹,然後訪問根節點,最後訪問右子樹;否則,程序退出。
後序遍歷的次序是:如果二叉樹不爲空,先訪問左子樹,然後訪問右子樹,最後訪問根節點;否則,程序退出。
如果對數據結構感興趣,可以查看這篇博文:
執念斬長河專欄數據結構–目錄

實驗:用python模擬二叉樹

二叉樹原圖
在這裏插入圖片描述
二叉樹實驗效果:
在這裏插入圖片描述
實驗代碼:

# -*- coding:utf-8 -*-

class BTree:
    def __init__(self, value):
        self.left = None
        self.data = value
        self.right = None

    def insertLeft(self, value):
        self.left = BTree(value)
        return self.left

    def insertRight(self, value):
        self.right = BTree(value)
        return self.right

    def show(self):
        print(self.data)


def preorder(node):
    if node.data:
        node.show()
        if node.left:
            preorder(node.left)
        if node.right:
            preorder(node.right)


def inorder(node):
    if node.data:
        if node.left:
            inorder(node.left)
        node.show()

        if node.right:
            inorder(node.right)


def postorder(node):
    if node.data:
        if node.left:
            inorder(node.left)

        if node.right:
            inorder(node.right)
        node.show()


if __name__ == '__main__':
    Root = BTree('Root')
    A = Root.insertLeft('A')
    C = A.insertLeft('C')
    D = A.insertRight('D')
    F = D.insertLeft('F')
    G = D.insertRight('G')
    B = Root.insertRight('B')
    E = B.insertRight('E')
    print('先序遍歷結果如下....')
    preorder(Root)
    print('中序遍歷結果如下.....')
    inorder(Root)
    print('後序遍歷結果如下.....')
    postorder(Root)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章