二叉樹中和為給定值的所有路徑

2021-08-17 22:28:32 字數 1323 閱讀 8137

本質上是壓棧出棧的過程

1.寫乙個主題函式

主題函式中要給定預設的樹,給定的值,還要乙個用來存路徑的列表,再加乙個記錄路徑長度的變數

2.寫乙個找路徑的函式

首先要確定給的節點是不是乙個空的,如果是空的則直接退出;

其次,把當前節點加入到路徑,把當前節點值加進路徑長度

然後,判斷當前是不是葉子(葉子用乙個變數表示)

如果是葉子,則再判斷葉子路徑和和給定值是不是一樣,一樣則列印路徑,不一樣則不管

如果不是葉子,則分兩部分處理,先看左節點,把左節點做根來重新查詢,

再看右節點,把右節點做根來重新查詢。

當左右都看完後,把路徑記錄的最上面的節點刪除掉。(即走完一條路徑,對應的刪掉其已確定過的節點)

class treenode(object):

def __init__(self,data,left=none,right=none):

self.root = data

self.left = left

self.right = right

a = treenode('a')

b = treenode('b')

c = treenode('c')

d = treenode('d')

e = treenode('e')

a.data = 10

b.data = 5

c.data = 12

d.data = 4

e.data = 7

a.left = b

a.right = c

b.left = d

b.right = e

def find_path(root,k,path,csum):

if root is none:

return

csum +=root.data

is_leaf = root.left is none and root.right is none

if is_leaf and csum == k:

print path

if root.left is not none:

find_path(root.left,k,path,csum)

if root.right is not none:

find_path(root.right,k,path,csum)

path.pop()

root = a

k = 22

path =

csum = 0

find_path(root,k,path,csum)

二叉樹的所有路徑

一 問題描述 給一棵二叉樹,找出從根節點到葉子節點的所有路徑。樣例 給出下面這棵二叉樹 1 2 3 5 所有根到葉子的路徑為 1 2 5 1 3 二 解題思路 運用遞迴的思想查詢二叉樹的所有路徑,定義乙個向量用來儲存路徑,然後運用前序遍歷二叉樹,返回查詢的的路徑,在庫檔案string中,to str...

二叉樹的所有路徑

描述 給一棵二叉樹,找出從根節點到葉子節點的所有路徑。樣例 給出下面這棵二叉樹 1 2 3 5 所有根到葉子的路徑為 1 2 5 1 3 解題思路 要找到二叉樹的所有路徑,就相當於從根節點出發一直到葉子節點。我們可以在遍歷的基礎之上完成這項操作,但是又有所不同。首先從根節點出發,先遍歷它的左子樹,直...

二叉樹的所有路徑

問題描述 給一棵二叉樹,找出從根節點到葉子節點的所有路徑。樣例 給出下面這棵二叉樹 1 2 3 5所有根到葉子的路徑為 1 2 5 1 3 解題思路 若二叉樹不為空,將節點新增到向量中,左右子樹進行遞迴,通過函式呼叫然後輸出。definition of treenode class treenode...