python數(shù)據(jù)結(jié)構(gòu)-樹

樹是數(shù)據(jù)結(jié)構(gòu)中常用到的一種結(jié)構(gòu),其實現(xiàn)較棧和隊稍為復(fù)雜一些。若樹中的所有節(jié)點(diǎn)的孩子節(jié)點(diǎn)數(shù)量不超過2個,則該為一個二叉樹。


“嵌套列表”表示樹

2017080815021788582607.png
20170808150217857149175.png
myTree = ['a',   #root
      ['b',  #left subtree
       ['d' [], []],
       ['e' [], []] ],
      ['c',  #right subtree
       ['f' [], []],
       [] ]
     ]

myTree = ['a', ['b', ['d',[],[]], ['e',[],[]] ], ['c', ['f',[],[]], []] ]
print(myTree)
print('left subtree = ', myTree[1])
print('root = ', myTree[0])
print('right subtree = ', myTree[2])

樹的根是myTree[0],根的左子樹是myTree[1],和右子樹是myTree[2]

二叉樹

20170808150217865294242.png
20170808150217881617379.png
20170808150217917424511.png
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by xuehz on 2017/8/8

#二叉樹

class Tree():
    def __init__(self, leftjd=0, rightjd=0, data =0):
        self.leftjd = leftjd
        self.rightjd = rightjd
        self.data = data

class Btree():
    def __init__(self, base = 0):
        self.base = base
    def empty(self):
        if self.base is 0:
            return True
        else:
            return False
    def qout(self, jd):
        """
        前序遍歷 NLR 根左右
        :param jd:
        :return:
        """
        if jd == 0:
            return
        print jd.data
        self.qout(jd.leftjd) #遞歸調(diào)用
        self.qout(jd.rightjd)
    def mout(self,jd):
        """
        中序遍歷 LNR 左根右
        :param jd:
        :return:
        """
        if jd == 0:
            return
        self.qout(jd.leftjd)
        print jd.data
        self.qout(jd.rightjd)

    def hout(self,jd):
        """
        后序遍歷 LRN 左右根
        :param jd:
        :return:
        """
        if jd ==0:
            return
        self.qout(jd.leftjd)  # 遞歸調(diào)用
        self.qout(jd.rightjd)
        print jd.data

if __name__ == '__main__':
    dj1 = Tree(data=8)
    dj2 = Tree(data=9)
    base = Tree(dj1, dj2, 7)# 根節(jié)點(diǎn)
    x = Btree(base)
    x.qout(x.base)
    print '========'
    x.mout(x.base)
    print '========'
    x.hout(x.base)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容