Python數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)二叉樹(shù)

樹(shù)的定義

樹(shù)是一種重要的非線性數(shù)據(jù)結(jié)構(gòu),直觀地看社搅,它是數(shù)據(jù)元素(在樹(shù)中稱為結(jié)點(diǎn))按分支關(guān)系組織起來(lái)的結(jié)構(gòu)憎茂,很象自然界中的樹(shù)那樣。樹(shù)結(jié)構(gòu)在客觀世界中廣泛存在忍捡,如人類社會(huì)的族譜和各種社會(huì)組織機(jī)構(gòu)都可用樹(shù)形象表示集漾。樹(shù)在計(jì)算機(jī)領(lǐng)域中也得到廣泛應(yīng)用切黔,如在編譯源程序時(shí),可用樹(shù)表示源程序的語(yǔ)法結(jié)構(gòu)帆竹。又如在數(shù)據(jù)庫(kù)系統(tǒng)中绕娘,樹(shù)型結(jié)構(gòu)也是信息的重要組織形式之一。一切具有層次關(guān)系的問(wèn)題都可用樹(shù)來(lái)描述栽连。

樹(shù)結(jié)構(gòu)的特點(diǎn)是:它的每一個(gè)結(jié)點(diǎn)都可以有不止一個(gè)直接后繼险领,除根結(jié)點(diǎn)外的所有結(jié)點(diǎn)都有且只有一個(gè)直接前驅(qū)。

樹(shù)的遞歸定義如下:

  • 至少有一個(gè)結(jié)點(diǎn)(稱為根)
  • 其它是互不相交的子樹(shù)

二叉樹(shù)

二叉樹(shù)是由n(n≥0)個(gè)結(jié)點(diǎn)組成的有限集合秒紧、每個(gè)結(jié)點(diǎn)最多有兩個(gè)子樹(shù)的有序樹(shù)绢陌。它或者是空集,或者是由一個(gè)根和稱為左熔恢、右子樹(shù)的兩個(gè)不相交的二叉樹(shù)組成脐湾。

特點(diǎn):

  • 二叉樹(shù)是有序樹(shù),即使只有一個(gè)子樹(shù)叙淌,也必須區(qū)分左秤掌、右子樹(shù);
  • 二叉樹(shù)的每個(gè)結(jié)點(diǎn)的度不能大于2鹰霍,只能取0闻鉴、1、2三者之一茂洒;
  • 二叉樹(shù)中所有結(jié)點(diǎn)的形態(tài)有5種:空結(jié)點(diǎn)孟岛、無(wú)左右子樹(shù)的結(jié)點(diǎn)、只有左子樹(shù)的結(jié)點(diǎn)督勺、只有右子樹(shù)的結(jié)點(diǎn)和具有左右子樹(shù)的結(jié)點(diǎn)渠羞。

源代碼:

#-*- encoding:utf-8 -*-

'''
樹(shù)的構(gòu)建:
     5
  6     7
8         9
'''

class Tree():
   '樹(shù)的實(shí)現(xiàn)'
    def __init__(self,ltree = 0,rtree = 0,data = 0):
        self.ltree = ltree
        self.rtree = rtree
        self.data = data
class BTree():
    '二叉樹(shù)的實(shí)現(xiàn)'
    def __init__(self,base = 0):
        self.base = base
    def _Empty(self):
        '是否為空樹(shù)'
        if self.base == 0:
            return True
        else:
            return False
    def qout(self,tree_base):
        '前序遍歷:根-左-右'
        if tree_base == 0:
            return
        print tree_base.data
        self.qout(tree_base.ltree)
        self.qout(tree_base.rtree)
    def mout(self,tree_base):
        '中序遍歷:左-根-右'
        if tree_base == 0:
            return
        self.mout(tree_base.ltree)
        print tree_base.data
        self.mout(tree_base.rtree)
    def hout(self,tree_base):
        '后序遍歷:左-右-根'
        if tree_base == 0:
            return
        self.hout(tree_base.ltree)
        self.hout(tree_base.rtree)
        print tree_base.data
#test

tree1 = Tree(data=8)
tree2 = Tree(data=9)
tree3 = Tree(tree1,data=6)
tree4 = Tree(tree2,0,data=7)
base = Tree(tree3,tree4,5)
btree = BTree(base)
print '前序遍歷結(jié)果:'
btree.qout(btree.base)
print '中序遍歷結(jié)果:'
btree.mout(btree.base)
print '后序遍歷結(jié)果:'
btree.hout(btree.base)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市智哀,隨后出現(xiàn)的幾起案子次询,更是在濱河造成了極大的恐慌,老刑警劉巖瓷叫,帶你破解...
    沈念sama閱讀 223,002評(píng)論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屯吊,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡赞辩,警方通過(guò)查閱死者的電腦和手機(jī)雌芽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門(mén)俄认,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)曙博,“玉大人,你說(shuō)我怎么就攤上這事昌犹。” “怎么了屉佳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,787評(píng)論 0 365
  • 文/不壞的土叔 我叫張陵谷朝,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我武花,道長(zhǎng)圆凰,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,237評(píng)論 1 300
  • 正文 為了忘掉前任体箕,我火速辦了婚禮专钉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘累铅。我一直安慰自己跃须,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布娃兽。 她就那樣靜靜地躺著菇民,像睡著了一般。 火紅的嫁衣襯著肌膚如雪投储。 梳的紋絲不亂的頭發(fā)上第练,一...
    開(kāi)封第一講書(shū)人閱讀 52,821評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音玛荞,去河邊找鬼娇掏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛冲泥,可吹牛的內(nèi)容都是我干的驹碍。 我是一名探鬼主播壁涎,決...
    沈念sama閱讀 41,236評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼凡恍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了怔球?” 一聲冷哼從身側(cè)響起嚼酝,我...
    開(kāi)封第一講書(shū)人閱讀 40,196評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎竟坛,沒(méi)想到半個(gè)月后闽巩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,716評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡担汤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評(píng)論 3 343
  • 正文 我和宋清朗相戀三年涎跨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崭歧。...
    茶點(diǎn)故事閱讀 40,928評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡隅很,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出率碾,到底是詐尸還是另有隱情叔营,我是刑警寧澤屋彪,帶...
    沈念sama閱讀 36,583評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站绒尊,受9級(jí)特大地震影響畜挥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜婴谱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評(píng)論 3 336
  • 文/蒙蒙 一蟹但、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谭羔,春花似錦矮湘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,755評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至景描,卻和暖如春十办,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背超棺。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,869評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工向族, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棠绘。 一個(gè)月前我還...
    沈念sama閱讀 49,378評(píng)論 3 379
  • 正文 我出身青樓件相,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親氧苍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夜矗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容