437路徑總和 III(雙重遞迴)

2021-10-14 04:26:50 字數 997 閱讀 1011

1、題目描述

給定乙個二叉樹,它的每個結點都存放著乙個整數值。

找出路徑和等於給定數值的路徑總數。

路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的(只能從父節點到子節點)。

二叉樹不超過1000個節點,且節點數值範圍是 [-1000000,1000000] 的整數。

2、示例

root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8

10/  \

5   -3

/ \    \

3   2   11

/ \   \

3  -2   1

返回 3。和等於 8 的路徑有:

1.  5 -> 3

2.  5 -> 2 -> 1

3.  -3 -> 11

3、題解

基本思想:雙重遞迴,第一重遞迴dfs遍歷root中的每乙個節點,第二重遞迴path以該節點為起始點不斷往下求和節點值,如果求和等於target,res+=1。

#include#include#include#include#includeusing namespace std;

struct treenode

};#define inf 9999

void init_treenode(treenode** t, vector& vec, int& pos)

else }

class solution

void path(treenode* root,int sum)

void dfs(treenode* root)

};int main()

; int pos = 0;

init_treenode(&root, vec, pos);

solution solute;

int sum=3;

cout

}

437 路徑總和 III 遞迴

給定乙個二叉樹,它的每個結點都存放著乙個整數值。找出路徑和等於給定數值的路徑總數。路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的 只能從父節點到子節點 二叉樹不超過1000個節點,且節點數值範圍是 1000000,1000000 的整數。這題採用雙遞迴的方式,但是依舊是按照...

437 路徑總和 III

給定乙個二叉樹,它的每個結點都存放著乙個整數值。找出路徑和等於給定數值的路徑總數。路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的 只能從父節點到子節點 二叉樹不超過1000個節點,且節點數值範圍是 1000000,1000000 的整數。示例 root 10,5,3,3,2...

437 路徑總和 III

給定乙個二叉樹,它的每個結點都存放著乙個整數值。找出路徑和等於給定數值的路徑總數。路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的 只能從父節點到子節點 二叉樹不超過1000個節點,且節點數值範圍是 1000000,1000000 的整數。示例 root 10,5,3,3,2...