国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)結(jié)構(gòu)】樹形結(jié)構(gòu)所有路徑復(fù)原為鏈表

這篇具有很好參考價(jià)值的文章主要介紹了【數(shù)據(jù)結(jié)構(gòu)】樹形結(jié)構(gòu)所有路徑復(fù)原為鏈表。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

1. 樹形結(jié)構(gòu)可視化

2. 樹形結(jié)構(gòu)轉(zhuǎn)為鏈表


此目標(biāo)是要還原樹形結(jié)構(gòu)的所有路徑。樹形結(jié)構(gòu)是一種常見的數(shù)據(jù)結(jié)構(gòu),它表示元素之間層次關(guān)系。在樹形結(jié)構(gòu)中,每個(gè)節(jié)點(diǎn)可能擁有一個(gè)或多個(gè)子節(jié)點(diǎn),形成了一個(gè)分層的結(jié)構(gòu)。為了還原樹形結(jié)構(gòu)的路徑,我們需要找到從根節(jié)點(diǎn)到每個(gè)葉節(jié)點(diǎn)的所有可能路徑。這可以通過深度優(yōu)先搜索或廣度優(yōu)先搜索來實(shí)現(xiàn)。通過遍歷樹形結(jié)構(gòu),我們可以收集所有路徑,從而完整地還原出整個(gè)樹形結(jié)構(gòu)。這些路徑可以用于各種應(yīng)用,例如路徑規(guī)劃、圖形可視化等。因此,還原樹形結(jié)構(gòu)的所有路徑是一項(xiàng)重要任務(wù)。

1. 樹形結(jié)構(gòu)可視化

import networkx as nx  # pip install networkx
import matplotlib.pyplot as plt

# 構(gòu)造樹結(jié)構(gòu)
tree = nx.Graph()

# 單條邊添加
# tree.add_edge('1', '2')
# tree.add_edge('1', '3')
# tree.add_edge('2', '4')
# tree.add_edge('3', '5')
# tree.add_edge('5', '6')
# tree.add_edge('5', '7')

# 批量邊添加
lst = [(1, 2), (2, 3), (3, 4), (3, 5), (3, 6), (4, 7), (5, 8), (6, 9), (7, 10), (8, 11), (9, 12), (10, 13), (11, 13), (12, 13), (13, 14)]
tree.add_edges_from(lst)

# 可視化樹結(jié)構(gòu)
pos = nx.spring_layout(tree)
nx.draw(tree, pos, with_labels=True, node_size=50, font_size=10)
plt.show()

結(jié)果為:

【數(shù)據(jù)結(jié)構(gòu)】樹形結(jié)構(gòu)所有路徑復(fù)原為鏈表,Algorithm,python,開發(fā)語言

2. 樹形結(jié)構(gòu)轉(zhuǎn)為鏈表

from collections import defaultdict
from pprint import pprint


def tree_to_linked_lists(node, nodes):
    if node not in nodes:
        return [[node]]
    linked_lists = []
    for child in nodes[node]:
        linked_lists.extend(tree_to_linked_lists(child, nodes))
    return [[node] + sub_list for sub_list in linked_lists]


def get_different_endings_sequence(root, transitions):
    nodes = defaultdict(list)
    for transition in transitions:
        parent, child = transition
        nodes[parent].append(child)
    print(nodes)
    linked_lists = tree_to_linked_lists(root, nodes)
    return linked_lists


if __name__ == "__main__":
    # 定義樹型轉(zhuǎn)移序列
    root = 1
    transitions = [(1, 2), (2, 3), 
                   (3, 4), (3, 5), (3, 6), 
                   (4, 7), (5, 8), (6, 9), 
                   (7, 10), (8, 11), (9, 12), 
                   (10, 13), (11, 13), (12, 13), 
                   (13, 14)]

    result = get_different_endings_sequence(root, transitions)
    pprint(result)
    """
    defaultdict(<class 'list'>, {1: [2], 2: [3], 3: [4, 5, 6], 4: [7], 5: [8], 6: [9], 7: [10], 8: [11], 9: [12], 10: [13], 11: [13], 12: [13], 13: [14]})
    
    [[1, 2, 3, 4, 7, 10, 13, 14],
    [1, 2, 3, 5, 8, 11, 13, 14],
    [1, 2, 3, 6, 9, 12, 13, 14]]
    """

代碼中的?tree_to_linked_lists?函數(shù)是一個(gè)遞歸函數(shù),它不斷地調(diào)用自己來處理子節(jié)點(diǎn)。對(duì)于每個(gè)節(jié)點(diǎn),函數(shù)會(huì)檢查它是否存在于?nodes?字典中。如果不存在,說明該節(jié)點(diǎn)是葉節(jié)點(diǎn),函數(shù)返回一個(gè)只包含該節(jié)點(diǎn)的列表。如果存在,函數(shù)會(huì)遍歷該節(jié)點(diǎn)的所有子節(jié)點(diǎn),并對(duì)每個(gè)子節(jié)點(diǎn)調(diào)用?tree_to_linked_lists?函數(shù)。函數(shù)返回的列表是所有路徑的列表,每個(gè)路徑都是從根節(jié)點(diǎn)到葉節(jié)點(diǎn)的節(jié)點(diǎn)列表。?文章來源地址http://www.zghlxwxcb.cn/news/detail-737472.html

到了這里,關(guān)于【數(shù)據(jù)結(jié)構(gòu)】樹形結(jié)構(gòu)所有路徑復(fù)原為鏈表的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 超大量數(shù)據(jù),前端樹形結(jié)構(gòu)展示

    后端返回了50萬數(shù)據(jù),讓前端一次性展示成樹,之前用的ant-design-vue的tree插件,卡的死死的,經(jīng)過大量實(shí)驗(yàn),現(xiàn)發(fā)現(xiàn)三種樹可以支持如此大數(shù)量的數(shù)據(jù)。 目錄 第一種:vue-easy-tree 使用方式: 1.安裝插件 2.引入插件 全局引入 組件引入 3.使用 ?在使用虛擬滾動(dòng)時(shí),必須設(shè)置?no

    2024年01月21日
    瀏覽(27)
  • 數(shù)據(jù)結(jié)構(gòu) C語言 樹形結(jié)構(gòu) 簡單目錄管理系統(tǒng)

    數(shù)據(jù)結(jié)構(gòu) C語言 樹形結(jié)構(gòu) 簡單目錄管理系統(tǒng)

    在圖書、操作系統(tǒng)文件夾、學(xué)生等管理系統(tǒng)中,目錄管理是必要環(huán)節(jié),如何高效搜尋與低復(fù)雜度存儲(chǔ)是實(shí)現(xiàn)這一環(huán)節(jié)的關(guān)鍵性問題。本課程設(shè)計(jì)需完成一種基于多叉樹結(jié)構(gòu)簡單目錄管理系統(tǒng),該系統(tǒng)能以交互式界面進(jìn)行創(chuàng)建目錄、刪除目錄、查找目錄、修改目錄、層次遍歷目

    2024年02月04日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)  C語言  樹形結(jié)構(gòu) 簡單目錄管理系統(tǒng)

    數(shù)據(jù)結(jié)構(gòu) C語言 樹形結(jié)構(gòu) 簡單目錄管理系統(tǒng)

    在圖書、操作系統(tǒng)文件夾、學(xué)生等管理系統(tǒng)中,目錄管理是必要環(huán)節(jié),如何高效搜尋與低復(fù)雜度存儲(chǔ)是實(shí)現(xiàn)這一環(huán)節(jié)的關(guān)鍵性問題。本課程設(shè)計(jì)需完成一種基于多叉樹結(jié)構(gòu)簡單目錄管理系統(tǒng),該系統(tǒng)能以交互式界面進(jìn)行創(chuàng)建目錄、刪除目錄、查找目錄、修改目錄、層次遍歷目

    2024年02月07日
    瀏覽(25)
  • c語言數(shù)據(jù)結(jié)構(gòu)——樹形結(jié)構(gòu)之樹和二叉樹

    c語言數(shù)據(jù)結(jié)構(gòu)——樹形結(jié)構(gòu)之樹和二叉樹

    二叉樹有什么用? 二叉樹應(yīng)用非常廣泛。 在操作系統(tǒng)源程序中,樹和森林被用來構(gòu)造文件系統(tǒng)。我們看到的window和linux等文件管理系統(tǒng)都是樹型結(jié)構(gòu)。在編譯系統(tǒng)中,如C編譯器源代碼中,二叉樹的中序遍歷形式被用來存放C 語言中的表達(dá)式。其次二叉樹本身的應(yīng)用也非常多,

    2023年04月18日
    瀏覽(44)
  • Java8 Stream流處理樹形結(jié)構(gòu)數(shù)據(jù)

    參考資料 Java8新特性-使用Stream流遞歸實(shí)現(xiàn)遍歷樹形結(jié)構(gòu) ID為2,6,11的Menu 是 ID為1的Menu子節(jié)點(diǎn) ID為3,4,5的Menu 是 ID為2的Menu子節(jié)點(diǎn) ?? 注意 是下面這種寫法的一種更簡單的寫法

    2024年02月01日
    瀏覽(21)
  • 【前后端的那些事】開源!treeSelect樹形結(jié)構(gòu)數(shù)據(jù)展示

    【前后端的那些事】開源!treeSelect樹形結(jié)構(gòu)數(shù)據(jù)展示

    前言 :最近寫項(xiàng)目,發(fā)現(xiàn)了一些很有意思的功能,想寫文章,錄視頻把這些內(nèi)容記錄下。但這些功能太零碎,如果為每個(gè)功能都單獨(dú)搭建一個(gè)項(xiàng)目,這明顯不合適。于是我想,就搭建一個(gè)項(xiàng)目,把那些我想將的小功能全部整合到一起。實(shí)現(xiàn) 搭一次環(huán)境 ,處處使用。 本文主要

    2024年02月01日
    瀏覽(22)
  • 數(shù)據(jù)庫樹形結(jié)構(gòu)怎么查 四種方法解決

    1.使SQL實(shí)現(xiàn)樹形查詢 1.1 樹形結(jié)構(gòu)固定,即固定幾層結(jié)構(gòu),可以采用數(shù)據(jù)庫連接查詢,這里以兩張表為例: 2.2 樹形結(jié)構(gòu)可能變化,采用數(shù)據(jù)庫的遞歸進(jìn)行查詢 2.Java代碼實(shí)現(xiàn) 1.遞歸查詢數(shù)據(jù)庫 2.一次性全部查詢出來,用Java代碼實(shí)現(xiàn)數(shù)據(jù)的樹形分解 注:以上Java代碼粘貼自網(wǎng)絡(luò)

    2024年02月14日
    瀏覽(18)
  • java返回前端樹形結(jié)構(gòu)數(shù)據(jù)(2種實(shí)現(xiàn)方式)

    0.思想 首先找到一級(jí)目錄(類別),然后從一級(jí)目錄(類別)遞歸獲取所有子目錄(類別),并組合成為一個(gè)“目錄樹” 1.普通實(shí)現(xiàn):controller層傳的是0層,就是一級(jí)目錄層,從這里開始往下遞歸。 2.stream流實(shí)現(xiàn): 3.實(shí)體類集合專VO類集合的工具類 入?yún)槲粗愋偷膶?shí)體集合

    2024年02月04日
    瀏覽(30)
  • 微信小程序多列下拉框的實(shí)現(xiàn)(樹形數(shù)據(jù)結(jié)構(gòu)和單數(shù)組數(shù)據(jù)結(jié)構(gòu)形式)

    微信小程序多列下拉框的實(shí)現(xiàn)(樹形數(shù)據(jù)結(jié)構(gòu)和單數(shù)組數(shù)據(jù)結(jié)構(gòu)形式)

    利用微信小程序api,實(shí)現(xiàn)不同傳輸數(shù)據(jù)格式下的多列下拉框?qū)崿F(xiàn) 首先了解一下picker中的事件 這里是官方文檔,具體意思就是 當(dāng)你滑動(dòng)多列中的某一列的時(shí)候, bindcolumnchange 事件就會(huì)觸發(fā)。當(dāng)選擇完畢點(diǎn)擊確定的時(shí)候 bindchange 事件就會(huì)觸發(fā) 微信小程序的多列下拉框是真的反人

    2024年02月07日
    瀏覽(25)
  • Element-UI控件Tree實(shí)現(xiàn)數(shù)據(jù)樹形結(jié)構(gòu)

    Element-UI控件Tree實(shí)現(xiàn)數(shù)據(jù)樹形結(jié)構(gòu)

    ? ? ? ? 在前端開發(fā)中,有時(shí)會(huì)遇到所有菜單數(shù)據(jù)在同一級(jí)的情況,后端未對(duì)數(shù)據(jù)進(jìn)行分級(jí)處理;但前端渲染需要是樹狀結(jié)構(gòu)的數(shù)據(jù),如何實(shí)現(xiàn)數(shù)據(jù)的樹狀化?將數(shù)組中通過父節(jié)點(diǎn)的ID與子節(jié)點(diǎn)的parentId關(guān)聯(lián),通過遞歸函數(shù)來實(shí)現(xiàn)。 ? ? ? ? 前端框架這里使用element-ui的tree控件

    2024年02月05日
    瀏覽(514)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包