二叉樹中和為某一值的路徑

2022-07-02 14:24:10 字數 1023 閱讀 7220

1

#-*- coding:utf-8 -*-

2class

treenode():

3def

__init__

(self,x):

4 self.val =x

5 self.left =none

6 self.right =none78

deffunction(root,target_number):

9 result =

10if

notroot:

11return

result12#

如果只有根節點或者找到葉子節點,我們就把其值返回

13if

not root.left and

not root.right and root.val ==target_number:

14return

[[root.val]]

15else:16

#如果不是葉子節點,我們分別對根節點的左子樹、右子樹進行遞迴,注意修改變數:

17 left = function(root.left,target_number -root.val)

18 right = function(root.right,target_number -root.val)

19for item in left+right:

21return result

題目描述

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

思路:首先要理解題意,是從根節點往子節點連。

1、如果只有根節點或者找到葉子節點,我們就把其對應的val值返回

2、如果不是葉子節點,我們分別對根節點的左子樹、右子樹進行遞迴,直到找到葉子結點。然後遍歷把葉子結點和父節點對應的val組成的序列返回上一層;如果沒找到路徑,其實也返回了序列,只不過是

二叉樹中和為某一值的路徑

include include using namespace std struct node void find path node r,int exceptedsum,vector path,int cursum node buildbtree int a,int i void preorder...

二叉樹中和為某一值的路徑

要輸出所有的路徑,必須額外用乙個棧來儲存當前路徑資訊。當訪問到節點a時,節點a的資訊要在訪問a的左右子樹時用到,因而,該資訊必須在遍歷a的左右子樹前加入到棧中,而在遍歷完a的左右子樹後從棧中移除。每訪問乙個節點,就計算當前路徑值 可直接利用父節點的路徑值 當其等於給定值且當前節點是葉子節點時,就列印...

二叉樹中和為某一值的路徑

面試題25 二叉樹中和為某一值的路徑 struct binarytreenode int value binarytreenode pleft binarytreenode pright 分析 用先序遍歷的方式遍歷二叉樹,初始時路徑為空。訪問乙個結點時若不到葉子結點且結點的和小於這個值那麼就把這個結...