Leetcode 437 路徑總和 III(遞迴)(未解決)
阿新 • • 發佈:2018-11-11
給定一個二叉樹,它的每個結點都存放著一個整數值。
找出路徑和等於給定數值的路徑總數。
路徑不需要從根節點開始,也不需要在葉子節點結束,但是路徑方向必須是向下的(只能從父節點到子節點)。
二叉樹不超過1000個節點,且節點數值範圍是 [-1000000,1000000] 的整數。
示例:
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
很懵逼,搞不懂為啥這樣寫。。。
先粘個程式碼,挖個坑,等以後再來解決。
程式碼如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int pathSum(TreeNode* root, int sum) { if(root==NULL) { return 0; } return getSum(root,sum)+pathSum(root->left,sum)+pathSum(root->right,sum); } int getSum (TreeNode* root,int sum) { int kind=0; if(root==NULL) { return kind; } if(root->val==sum) { kind++; } kind+=getSum(root->left,sum-root->val); kind+=getSum(root->right,sum-root->val); return kind; } };