1. 程式人生 > >12 二叉樹中和為某一值的路徑

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

0 引言

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

1 抽象問題具體化

舉例1:樹的形態如圖所示。給定的整數值為22,求路徑。

解答:所有的路徑總共有三條,分別是

1)10->5->4,和為19;

2)10->5->7,和為22;

3)10->12,和為22.

2 具體問題抽象分析

分三步

1)寫出所有的路徑; vector<vector<int>>  allPath(TreeNode* p);

(1)前序遍歷樹,如果

 

2)逐個判斷,不符合的刪掉;   寫個for迴圈即可

3)排序之後輸出.  根據size進行排序即可

3 demo

 

4 程式碼優化