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