leetcode Tree 路徑總和 III

2021-10-07 14:14:36 字數 2335 閱讀 4893

1,題目:

2,思路:

方法一:迭代法:

方法二:用hashmap:

字首和的遞迴回溯思路:

3,**:

方法一:迭代法:

class

solution

int result =

countpath

(root,sum)

;int a =

pathsum

(root.left,sum)

;int b =

pathsum

(root.right,sum)

;return result+a+b;

}public

intcountpath

(treenode root,

int sum)

sum = sum - root.val;

int result = sum ==0?

1:0;

return result +

countpath

(root.left,sum)

+countpath

(root.right,sum);}

}

方法二:用hashmap:

class

solution

/** * 字首和的遞迴回溯思路

* 從當前節點反推到根節點(反推比較好理解,正向其實也只有一條),有且僅有一條路徑,因為這是一棵樹

* 如果此前有和為currsum-target,而當前的和又為currsum,兩者的差就肯定為target了

* 所以字首和對於當前路徑來說是唯一的,當前記錄的字首和,在回溯結束,回到本層時去除,保證其不影響其他分支的結果

* @param node 樹節點

* @param prefixsumcount 字首和map

* @param target 目標值

* @param currsum 當前路徑和

* @return 滿足題意的解

*/private

intrecursionpathsum

(treenode node, map

prefixsumcount,

int target,

int currsum)

// 2.本層要做的事情

int res =0;

// 當前路徑上的和

currsum += node.val;

//---核心**

// 看看root到當前節點這條路上是否存在節點字首和加target為currsum的路徑

// 當前節點->root節點反推,有且僅有一條路徑,如果此前有和為currsum-target,而當前的和又為currsum,兩者的差就肯定為target了

// currsum-target相當於找路徑的起點,起點的sum+target=currsum,當前點到起點的距離就是target

res += prefixsumcount.

getordefault

(currsum - target,0)

;// 更新路徑上當前節點字首和的個數

prefixsumcount.

put(currsum, prefixsumcount.

getordefault

(currsum,0)

+1);

//---核心**

// 3.進入下一層

res +=

recursionpathsum

(node.left, prefixsumcount, target, currsum)

; res +=

recursionpathsum

(node.right, prefixsumcount, target, currsum)

;// 4.回到本層,恢復狀態,去除當前節點的字首和數量

prefixsumcount.

put(currsum, prefixsumcount.

get(currsum)-1

);return res;

}}

Leetcode Tree 知識點總結

思路 先確定root,在遞迴獲取root.left和root.right definition for a binary tree node.class treenode object def init self,x self.val x self.left none self.right none...

關鍵路徑計算 總時差 自由時差

1.關鍵路徑 2.總時差與自由時差的區別 總時差是指在不延誤專案完成日期或違反進度因素的前提下,某活動可以推遲的時間。總時差 ls es lf ef 自由時差是指在不影響緊後活動最早開始的情況下,當前活動可以推遲的時間。自由時差 後一活動 es 前一活動的 ef 所以總時差影響總工期,自由時差影響緊...

關鍵路徑計算 總時差 自由時差

1.關鍵路徑 2.總時差與自由時差的區別 總時差是指在不延誤專案完成日期或違反進度因素的前提下,某活動可以推遲的時間。總時差 ls es lf ef 自由時差是指在不影響緊後活動最早開始的情況下,當前活動可以推遲的時間。自由時差 後一活動 es 前一活動的 ef 所以總時差影響總工期,自由時差影響緊...