1. 程式人生 > 實用技巧 >OpenCV之高斯平滑(Python實現)

OpenCV之高斯平滑(Python實現)

題目

這道題有意思的一點是:路徑不一定得從根節點開始,也不一定得到葉子節點結束,這道題2叉樹和為某一個值的路徑比較像,本質上還是一道DFS型別的題目
那麼因為可以從任意一個節點開始,所以我們需要遍歷到每個節點作為開始,滿足條件的時候結束

class Solution {
private:
    int cnt = 0;
public:
    int pathSum(TreeNode* root, int sum) {
        if(!root)
            return cnt;
        pre_order(root, sum);
        return cnt;
    }

   void dfs(TreeNode *root, int sum){
        if(!root)
            return;
        if(root->val == sum)
            cnt++;

        dfs(root->left,sum - root->val);
        dfs(root->right, sum -root->val);
   }

   void pre_order(TreeNode *root, int sum){
       /*
       路徑有可能從任何節點開始,所以乾脆前序遍歷一遍
       */
       if(!root)
            return;
        dfs(root, sum);//同時看從root這個節點開始的時候,有沒有符合條件的路徑
        pre_order(root->left, sum);
        pre_order(root->right, sum);
   }
};