zoukankan      html  css  js  c++  java
  • Path Sum II

    题目链接

    Path Sum II - LeetCode

    注意点

    • 不要访问空结点

    解法

    解法一:递归,DFS。每当DFS搜索到新节点时,都要保存该节点。而且每当找出一条路径之后,都将这个保存为一维vector的路径保存到最终结果二维vector中。并且,每当DFS搜索到子节点,发现不是路径和时,返回上一个结点时,需要把该节点从一维vector中移除。

    /**
     * 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:
        void findPath(TreeNode* node,int sum,vector<int> temp,vector<vector<int>>& ret)
        {
            if(!node) return;
            temp.push_back(node->val);
            if(node->val == sum && !node->left && !node->right) ret.push_back(temp);
            findPath(node->left,sum-(node->val),temp,ret);
            findPath(node->right,sum-(node->val),temp,ret);
            temp.pop_back();
        }
        vector<vector<int>> pathSum(TreeNode* root, int sum) {
            vector<vector<int>> ret;
            if(!root) return ret;
            findPath(root,sum,{},ret);
            return ret;
        }
    };
    

    小结

  • 相关阅读:
    【转】数学题目大集合
    hdu3534,个人认为很经典的树形dp
    GYM
    HDU
    POJ
    POJ
    POJ
    set的经典应用
    天梯赛训练1 7-9 集合相似度
    天梯赛训练1 7-8 查验身份证
  • 原文地址:https://www.cnblogs.com/multhree/p/10612085.html
Copyright © 2011-2022 走看看