1. 程式人生 > >劍指offer:[程式設計題]二叉樹中和為某一值的路徑(Python)

劍指offer:[程式設計題]二叉樹中和為某一值的路徑(Python)

題目描述:

輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。

第一次做的解題思路:

二叉樹的深度優先搜尋~搜尋到葉子節點後,將該葉子節點pop出來,同時記得num要加回去,開始另一條支路的搜尋~ 幾點注意: 1.深拷貝和淺拷貝的區別,深拷貝要用copy.deepcopy() 2.為了防止路徑只到中間節點,注意拷貝需要的條件~

第一次做的程式碼(2018.4.26):

import copy

class Solution:
    # 返回二維列表,內部每個列表表示找到的路徑
    def __init__(self):
        self.path_out = []
        self.path = []
    def DeepSearch(self, root, num):
        if root:
            if root.left:
                self.path.append(root.left.val)
                num = self.DeepSearch(root.left, num-root.left.val)
            if root.right:
                self.path.append(root.right.val)
                num = self.DeepSearch(root.right, num- root.right.val)
            if num == 0 and (not root.right) and (not root.left):

                path = copy.deepcopy(self.path)
                self.path_out.append(path)
            num += self.path.pop()
        return num
    def FindPath(self, root, expectNumber):
        # write code here
        if root:
            self.path.append(root.val)
            expectNumber -= root.val
            num = self.DeepSearch(root, expectNumber)
        return self.path_out

相關推薦

offer:[程式設計]中和路徑Python

題目描述:輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。第一次做的解題思路:二叉樹的深度優先搜尋~搜尋到葉子節點後,將該葉子節點pop出來,同時記得num要加回去,開始另一條支路的搜

Offer 25 中和路徑 Java

對二叉樹的相關演算法還是不瞭解。 這裡有兩點是之前所用不好的: 1:把棧用進來; 2:有一個變數記錄當前的數值,這個在遞迴的過程當中就能夠得到之前的值。 package test; import java.util.Stack; public class FindPat

offer系列(十) 中和路徑,複雜連結串列的複製,

二叉樹中和為某一值的路徑 題目描述 輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,陣列長度大的陣列靠前) 解題思路: 深度優先遞迴遍歷樹, 把結點加入

offer》系列 中和路徑Java

連結 牛客: 二叉樹中和為某一值的路徑 題目描述 輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,陣列長度大的陣列靠前) 思路 題目給定

offer-24:中和路徑

題目描述 輸入一顆二叉樹的根節點和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,陣列長度大的陣列靠前) 思路 dfs演算法 程式碼 public class So

Offer - 24:中和路徑

題目描述 輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,陣列長度大的陣列靠前) 題目連結:https://www.nowcoder.co

offer 24:中和路徑

二叉樹中和為某一值的路徑 #include <iostream> #include <vector> using namespace std; using namespace std; struct TreeNode { int val; TreeN

牛客網刷|中和路徑

題目來源:牛客網 程式設計連線 題目描述 輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 解析: 經典DFS演算法,深度優先演算法 cl

牛客網刷——中和路徑

題目描述: 輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,陣列長度大的陣列靠前) 解答:    private ArrayList&l

offer程式設計JAVA實現)——第24中和路徑

github https://github.com/JasonZhangCauc/JZOffer import java.util.ArrayList; /** * * 劍指offer程式設計題

offer:第25值得路徑

//思路:可以利用全路徑逐層遞減,在用遞迴來尋找路徑 import java.util.ArrayList; import java.util.List; public class _Test_25_2 { ArrayList<ArrayList

offer第24中和路徑

題目:輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 思想:由於本題中的根要在前面,因而我們首先想到的是前序遍歷。當用前序遍歷的方式訪問某一節點時,我們把該節點新增到路徑上,並累加

【LeetCode & offer9:34 中和路徑112. Path Sum

【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...) 112. Path Sum Given a binary tree and a sum, determine if the tree has a root-to-leaf path suc

offer第二十四中和路徑】c++實現

題目描述 輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 先序遍歷二叉樹,用一個數組記錄當前路徑,如果遍歷到葉子節點就進行判斷是否和給定值相等。 class Solution { public: vect

24、offer--中和路徑

val 遍歷 描述 所有 oid res bold eno bsp 題目描述 輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 解題思路:本題采用先序遍歷,遍歷到葉子節點,如果和

offer十四之中和路徑

rgs one main java http ring dal offer for 一、題目   輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 二、思路 詳見代碼 三、

Offer——中和路徑

roo int paths struct () node nod cnblogs ret 題目描述: 輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 分析: 先序遍歷二叉樹,找到

offer-25.中和路徑

path val tmp aux node ptr body 深度 light 0 題目 輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 1 分析 深度優先遍歷+回溯. 出點就是,

pythonoffer系列中和路徑

not 和為某一值的路徑 python 數組長度 self. expect pytho def lis 題目描述 輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(註意:

offer---中和路徑

題目:二叉樹中和為某一值的路徑 要求:輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 1 /* 2 struct TreeNode { 3 int val; 4 struct