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

