題目描述
輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。
思路:首先要理解題意,是從根節點往子節點連。
1、如果只有根節點或者找到葉子節點,我們就把其對應的val值返回
2、如果不是葉子節點,我們分別對根節點的左子樹、右子樹進行遞歸,直到找到葉子結點。然后遍歷把葉子結點和父節點對應的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 # 如果只有根節點或者找到葉子節點,我們就把其值返回 if not root.left and not root.right and root.val == target_number: return [[root.val]] else: # 如果不是葉子節點,我們分別對根節點的左子樹、右子樹進行遞歸,注意修改變量: 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
總結
以上就是本文關于Python編程求解二叉樹中和為某一值的路徑代碼示例的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站:
Python探索之創建二叉樹
Python算法之求n個節點不同二叉樹個數
如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
|
新聞熱點
疑難解答