最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python樹(shù)的雙親存儲(chǔ)結(jié)構(gòu)的實(shí)現(xiàn)示例

 更新時(shí)間:2023年11月24日 11:49:04   作者:Guff_hys  
本文主要介紹了python樹(shù)的雙親存儲(chǔ)結(jié)構(gòu),這種存儲(chǔ)結(jié)構(gòu)是一種順序存儲(chǔ)結(jié)構(gòu),采用元素形如“[結(jié)點(diǎn)值,雙親結(jié)點(diǎn)索引]”的列表表示,感興趣的可以了解一下

這種存儲(chǔ)結(jié)構(gòu)是一種順序存儲(chǔ)結(jié)構(gòu),采用元素形如“[結(jié)點(diǎn)值,雙親結(jié)點(diǎn)索引]”的列表表示。通常每個(gè)結(jié)點(diǎn)有唯一的索引(或者偽地址),根結(jié)點(diǎn)的索引為0,它沒(méi)有雙親結(jié)點(diǎn),其雙親結(jié)點(diǎn)的索引為-1。例如,所示的樹(shù)對(duì)應(yīng)的雙親存儲(chǔ)結(jié)構(gòu)如下:

樹(shù)的雙親存儲(chǔ)結(jié)構(gòu)

t=[["A",-1],["B",0],["C",0],["D",1],["E",1],["F",1],["G",4]]

在該存儲(chǔ)結(jié)構(gòu)t中,索引為i的結(jié)點(diǎn)是t[i],其中t[i][0]為結(jié)點(diǎn)值,t[i][1]為該結(jié)點(diǎn)的雙親結(jié)點(diǎn)的索引。

若一棵樹(shù)采用雙親在儲(chǔ)結(jié)構(gòu)存儲(chǔ),設(shè)計(jì)一個(gè)算法求指定索引是i的結(jié)點(diǎn)的層次。

解:用cnt 表示索引i的結(jié)點(diǎn)的層次(初始為1)。沿著雙親指針向上移動(dòng),當(dāng)沒(méi)有到達(dá)根結(jié)點(diǎn)時(shí)循環(huán):cnt 增1,i向上移動(dòng)一次。當(dāng)?shù)竭_(dá)根結(jié)點(diǎn)時(shí)cnt 恰好為原索引i結(jié)點(diǎn)的層次,最后返回cnt。對(duì)應(yīng)的算法如下:

def find_level(parent, i):
    cnt = 1
    while parent[i] != -1:
        cnt += 1
        i = parent[i]
    return cnt

 python樹(shù)的雙親存儲(chǔ)結(jié)構(gòu):

class FNode():
    def __init__(self,name=None,i=None):#name為數(shù)據(jù),i為其對(duì)應(yīng)的父節(jié)點(diǎn)下標(biāo)
        self.node=[name,i]
class ftree():#存儲(chǔ)節(jié)點(diǎn)數(shù)據(jù)
    def __init__(self):
        self.data=[]
    #增加
    def add(self,name,i):#添加節(jié)點(diǎn)數(shù)據(jù)進(jìn)入數(shù)的結(jié)構(gòu)
        p = FNode(name,i)#建立節(jié)點(diǎn)
        self.data.append(p.node)#添加進(jìn)入
    #創(chuàng)建
    def CreateTree(self,arr):#傳入對(duì)應(yīng)數(shù)據(jù)建立數(shù)arr為一個(gè)樹(shù)關(guān)系的二維列表
        for i in arr:
            self.data.append(i)
    #刪除
    def Dex(self,name,i):#給出節(jié)點(diǎn)的name和i進(jìn)行刪除
        for j in range(len(self.data)):
            if self.data[j][0]==name and self.data[j][1]==i:
                self.data.pop(j)
                break
    # 修改節(jié)點(diǎn)數(shù)據(jù)
    def alter(self,name,i,n_name):
        for j in range(len(self.data)):
            if self.data[j][0]==name and self.data[j][1]==i:
                self.data[j][0]=n_name
                break
    #查找節(jié)點(diǎn)
    def find(self,name,i):
        for j in range(len(self.data)):
            if self.data[j][0]==name and self.data[j][1]==i:
                return self.data[j]

    #遍歷樹(shù)結(jié)構(gòu),雙親存儲(chǔ)單位的結(jié)構(gòu)決定了它只能層次遍歷
    def display(self):
        for i in range(len(self.data)):
            print(self.data[i][0],end=" ")
        print()

t = [['A',-1],['B',0],['C',0],['D',1],['E',1],['F',1],['G',4]]
tree_1 = ftree()
tree_1.CreateTree(t)
tree_1.display()
tree_1.add('H',4)
tree_1.display()
tree_1.Dex('H',4)
tree_1.display()
tree_1.alter('G',4,'5')
tree_1.display()
print(tree_1.find('A',-1))

雙親存儲(chǔ)結(jié)構(gòu)利用了每個(gè)結(jié)點(diǎn)(根節(jié)點(diǎn)除外)有啡一雙親的性質(zhì)。在這種存儲(chǔ)結(jié)構(gòu)中,求某個(gè)結(jié)點(diǎn)的雙親結(jié)點(diǎn)十分容易,但求某個(gè)結(jié)點(diǎn)的孩子結(jié)點(diǎn)時(shí)需要遍歷整個(gè)結(jié)構(gòu)。

到此這篇關(guān)于python樹(shù)的雙親存儲(chǔ)結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)python樹(shù)的雙親存儲(chǔ)結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python判斷質(zhì)數(shù)(素?cái)?shù))的簡(jiǎn)單方法講解

    使用Python判斷質(zhì)數(shù)(素?cái)?shù))的簡(jiǎn)單方法講解

    這篇文章主要介紹了使用Python判斷質(zhì)數(shù)(素?cái)?shù))的簡(jiǎn)單方法講解,經(jīng)常被用來(lái)做科學(xué)計(jì)算的Python處理這種小問(wèn)題當(dāng)然手到擒來(lái)^_-需要的朋友可以參考下
    2016-05-05
  • Tensor和NumPy相互轉(zhuǎn)換的方法

    Tensor和NumPy相互轉(zhuǎn)換的方法

    本文主要介紹了Tensor和NumPy相互轉(zhuǎn)換的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python如何利用%操作符格式化字符串詳解

    Python如何利用%操作符格式化字符串詳解

    %是Python風(fēng)格的字符串格式化操作符,非常類(lèi)似C語(yǔ)言里的printf()函數(shù)的字符串格式化,下面這篇文章主要給大家介紹了關(guān)于Python如何利用%操作符格式化字符串的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 用Python制作在地圖上模擬瘟疫擴(kuò)散的Gif圖

    用Python制作在地圖上模擬瘟疫擴(kuò)散的Gif圖

    這篇文章主要介紹了如何用Python制作在地圖上模擬瘟疫擴(kuò)散的Gif圖,其中用到了歐拉公式等數(shù)學(xué)知識(shí)、需要一定的算法基礎(chǔ),需要的朋友可以參考下
    2015-03-03
  • Python裝飾器(decorator)定義與用法詳解

    Python裝飾器(decorator)定義與用法詳解

    這篇文章主要介紹了Python裝飾器(decorator)定義與用法,結(jié)合具體實(shí)例形式詳細(xì)分析了Python裝飾器的概念、功能及相關(guān)使用技巧,需要的朋友可以參考下
    2018-02-02
  • Python實(shí)現(xiàn)對(duì)word文檔添加密碼去除密碼的示例代碼

    Python實(shí)現(xiàn)對(duì)word文檔添加密碼去除密碼的示例代碼

    這篇文章主要介紹了Python實(shí)現(xiàn)對(duì)word文檔添加密碼去除密碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Python讀取Excel數(shù)據(jù)并進(jìn)行可視化分析

    Python讀取Excel數(shù)據(jù)并進(jìn)行可視化分析

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)讀取Excel數(shù)據(jù)并進(jìn)行可視化分析,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2025-08-08
  • python在控制臺(tái)輸出進(jìn)度條的方法

    python在控制臺(tái)輸出進(jìn)度條的方法

    這篇文章主要介紹了python在控制臺(tái)輸出進(jìn)度條的方法,實(shí)例分析了Python輸出進(jìn)度條效果的方法,需要的朋友可以參考下
    2015-06-06
  • Centos Python2 升級(jí)到Python3的簡(jiǎn)單實(shí)現(xiàn)

    Centos Python2 升級(jí)到Python3的簡(jiǎn)單實(shí)現(xiàn)

    下面小編就為大家?guī)?lái)一篇Centos Python2 升級(jí)到Python3的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • Python try-except-else-finally的具體使用

    Python try-except-else-finally的具體使用

    本文主要介紹了Python try-except-else-finally的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評(píng)論

彭山县| 灵丘县| 阳信县| 金堂县| 蓝田县| 德钦县| 宿松县| 黑河市| 博罗县| 芮城县| 辽阳市| 阳新县| 密云县| 宝应县| 武平县| 施甸县| 周至县| 德昌县| 通城县| 怀化市| 宜宾市| 玉山县| 咸宁市| 中阳县| 涞水县| 会宁县| 清原| 辽阳市| 屏边| 灵武市| 兴宁市| 房山区| 崇义县| 垣曲县| 高密市| 伽师县| 六安市| 梁平县| 疏附县| 林西县| 长宁区|