面試題34 二叉樹中和為某一值的路徑

2021-10-11 07:22:08 字數 702 閱讀 5263

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

思路:先序遍歷樹,用全域性變數linkedlist型別的 path 來記錄路徑,暴力回溯,tar 不停的遞減,直到 tar 為 0 並且當前結點為葉子結點,那麼找到正確的路徑 path,將其存入結果集中。

class

solution

// 不要寫成 static ,不然裡面定義的成員都是 static 的,全域性變數的多個測試用例就會發生錯誤

void

recur

(treenode root,

int tar)

path.

add(root.val)

; tar -= root.val;

if(tar ==

0&& root.left == null && root.right == null)

recur

(root.left, tar)

;recur

(root.right, tar)

;// 因為 path 是全域性變數,當前結點遍歷完了,一定要進行回溯,

path.

removelast()

;return;}

}

面試題34 二叉樹中和為某一值的路徑

一 題目 輸入一棵二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。二 關鍵 1.儲存路徑使用棧的後進先出的特點,但是是使用vector實現的 比較好用 2.三 解釋 1 解題思路 當用前序遍歷的方式訪問到某乙個節點時,我們把該...

面試題34 二叉樹中和為某一值的路徑

輸入一棵二叉樹和乙個整數,列印出二叉樹中節點值的和為輸入整數的所有路徑。從樹的根節點開始往下一直到葉節點所經過的節點形成一條路徑。示例 給定如下二叉樹,以及目標和 sum 22,5 4 8 11 13 4 7 2 5 1返回 5,4,11,2 5,8,4,5 難點在於如何儲存路徑 法一 可以利用遞迴...

面試題34 二叉樹中和為某一值的路徑

輸入一顆二叉樹的根節點和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。考察點 具體例子抽象函式 二叉樹遍歷 思路 如下,遞迴的思想。findpath函式不太好理解。struct treenode void findpath...