1.問題描述
輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。
2.思路解析
當前序遍歷訪問到某一結點時,將該結點新增到路徑上,累加該節點的值,如果該結點為葉子結點且和等於期望值,列印路徑,如果不是葉子結點,繼續訪問子節點,當前結點訪問結束後,要出棧,並且從和裡減去它的值。該過程用棧來儲存路徑上的結點。
3.python**
# -*- coding:utf-8 -*-
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
import copy
class solution:
# 返回二維列表,內部每個列表表示找到的路徑
def __init__(self):
self.paths =
def findpath(self, root, expectnumber):
# write code here
if root==none:
return self.paths
self.calpath(root,, 0, expectnumber)
return self.paths
def calpath(self, root, path, currnum, expnum):
currnum += root.val
if root.left==none and root.right==none and currnum==expnum:
if root.left!=none:
self.calpath(root.left, path, currnum, expnum)
if root.right!=none:
self.calpath(root.right, path, currnum, expnum)
path.pop()
4.總結
注意**第22行為deepcopy,否則返回值為空list
劍指Offer 二叉樹 二叉樹中和為某一值的路徑
輸入一棵二叉樹和乙個整數,列印出二叉樹中節點值的和為輸入整數的所有路徑。從樹的根節點開始往下一直到葉節點所經過的節點形成一條路徑。示例 給定如下二叉樹,以及目標和 sum 22 返回 解題思路 演算法流程 實現 definition for a binary tree node.class tree...
劍指offer 二叉樹 二叉樹中和為某一值的路徑
題目描述 輸入一顆二叉樹的根節點和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。注意 在返回值的list中,陣列長度大的陣列靠前 參 coding utf 8 class treenode def init self,x ...
二叉樹中和為某一值得路徑 劍指Offer
輸入一顆二叉樹的根節點和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。注意 在返回值的list中,陣列長度大的陣列靠前 首先需要遞迴遍歷整棵樹,遍歷完每一條路徑,遍歷的順序是先根節點,然後是左節點,接著是右節點 如果節點的...