Python編程求解二叉樹(shù)中和為某一值的路徑代碼示例
題目描述
輸入一顆二叉樹(shù)和一個(gè)整數(shù),打印出二叉樹(shù)中結(jié)點(diǎn)值的和為輸入整數(shù)的所有路徑。路徑定義為從樹(shù)的根結(jié)點(diǎn)開(kāi)始往下一直到葉結(jié)點(diǎn)所經(jīng)過(guò)的結(jié)點(diǎn)形成一條路徑。
思路:首先要理解題意,是從根節(jié)點(diǎn)往子節(jié)點(diǎn)連。
1、如果只有根節(jié)點(diǎn)或者找到葉子節(jié)點(diǎn),我們就把其對(duì)應(yīng)的val值返回
2、如果不是葉子節(jié)點(diǎn),我們分別對(duì)根節(jié)點(diǎn)的左子樹(shù)、右子樹(shù)進(jìn)行遞歸,直到找到葉子結(jié)點(diǎn)。然后遍歷把葉子結(jié)點(diǎn)和父節(jié)點(diǎn)對(duì)應(yīng)的val組成的序列返回上一層;如果沒(méi)找到路徑,其實(shí)也返回了序列,只不過(guò)是[]
代碼如下:
# -*- coding:utf-8 -*- class TreeNode(): def __init__(self,x): self.val = x self.left = None self.right = None def function(root,target_number): result = [] if not root: return result # 如果只有根節(jié)點(diǎn)或者找到葉子節(jié)點(diǎn),我們就把其值返回 if not root.left and not root.right and root.val == target_number: return [[root.val]] else: # 如果不是葉子節(jié)點(diǎn),我們分別對(duì)根節(jié)點(diǎn)的左子樹(shù)、右子樹(shù)進(jìn)行遞歸,注意修改變量: left = function(root.left,target_number - root.val) right = function(root.right,target_number - root.val) for item in left+right: result.append([root.val]+item) return result
總結(jié)
以上就是本文關(guān)于Python編程求解二叉樹(shù)中和為某一值的路徑代碼示例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
Python算法之求n個(gè)節(jié)點(diǎn)不同二叉樹(shù)個(gè)數(shù)
如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- python數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)的建立實(shí)例
- python數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)的遍歷實(shí)例
- Python中的二叉樹(shù)查找算法模塊使用指南
- python二叉樹(shù)遍歷的實(shí)現(xiàn)方法
- Python利用前序和中序遍歷結(jié)果重建二叉樹(shù)的方法
- python數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)的統(tǒng)計(jì)與轉(zhuǎn)換實(shí)例
- Python探索之創(chuàng)建二叉樹(shù)
- 老生常談Python序列化和反序列化
- Python pickle類(lèi)庫(kù)介紹(對(duì)象序列化和反序列化)
- Python實(shí)現(xiàn)的序列化和反序列化二叉樹(shù)算法示例
相關(guān)文章
python3發(fā)送request請(qǐng)求及查看返回結(jié)果實(shí)例
這篇文章主要介紹了python3發(fā)送request請(qǐng)求及查看返回結(jié)果實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04python實(shí)例方法的使用注意及代碼實(shí)例
在本篇文章里小編給大家總結(jié)的是關(guān)于python實(shí)例方法的使用注意及代碼實(shí)例內(nèi)容,對(duì)此有興趣的朋友們可以參考下。2022-11-11詳解程序意外中斷自動(dòng)重啟shell腳本(以Python為例)
這篇文章主要介紹了詳解程序意外中斷自動(dòng)重啟shell腳本(以Python為例),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07opencv實(shí)踐項(xiàng)目之圖像拼接詳細(xì)步驟
OpenCV的應(yīng)用領(lǐng)域非常廣泛,包括圖像拼接、圖像降噪、產(chǎn)品質(zhì)檢、人機(jī)交互、人臉識(shí)別、動(dòng)作識(shí)別、動(dòng)作跟蹤、無(wú)人駕駛等,下面這篇文章主要給大家介紹了關(guān)于opencv實(shí)踐項(xiàng)目之圖像拼接的相關(guān)資料,需要的朋友可以參考下2023-05-05啟動(dòng)targetcli時(shí)遇到錯(cuò)誤解決辦法
這篇文章主要介紹了啟動(dòng)targetcli時(shí)遇到錯(cuò)誤解決辦法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家遇到這樣的錯(cuò)誤解決,需要的朋友可以參考下2017-10-10詳解model.train()和model.eval()兩種模式的原理與用法
這篇文章主要介紹了詳解model.train()和model.eval()兩種模式的原理與用法,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,那么看完這篇文章一定會(huì)對(duì)你有所幫助2023-03-03