• 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;
        }
    };
    

    小结

  • 相关阅读:
    HDU 4508
    HDU 4503
    HDU 4532
    HDU 4544
    HDU 3167 KMP
    HDU 4542
    HDU 4528
    【70】自然语言处理与词嵌入
    【69】循环神经网络
    【68】一维和三维卷积
  • 原文地址:https://www.cnblogs.com/multhree/p/10612085.html
Copyright © 2020-2023  润新知