阅读背景:

数据结构——二叉树的路径问题_剑指offer和leetcode中编程题目比较

来源:互联网 

剑指offer

//第一种解决办法
class Solution {
public:
     vector<vector<int> > buffer;
    vector<int> temp;
    vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
         
    if(root==NULL)
        return buffer;
        temp.push_back(root->val);
        if(expectNumber-root->val==0&&root->left==NULL&&root->right==NULL)//叶子结点同时之和为0
        {
            
            buffer.push_back(temp);
        }
        //如果有子节点,则遍历子节点
       if(root->left != nullptr)
          FindPath(root->left,expectNumber-root->val);
        if(root->right != nullptr)
        FindPath(root->right,expectNumber-root->val);
        if(temp.size()!=0)
           temp.pop_back();//再返回父节点之前,删除路径上确当前结点。
        return buffer;
        
        
    }
};
//第二种解决办法
class Solution {
public:
     vector<vector<int> > buffer;
    vector<int> temp;
    int sum =0;
    vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
         
        if(root==NULL)
        return buffer;
         sum = sum+root->val;
        temp.push_back(root->val);
        if(expectNumber== sum &&root->left==NULL&&root->right==NULL)
        {
            
            buffer.push_back(temp);
        }
        //如果有子节点,则遍历子节点
       if(root->left != nullptr)
          FindPath(root->left,expectNumber);
        if(root->right != nullptr)
        FindPath(root->right,expectNumber);
        if(temp.size()!=0)
            sum = sum-root->val;
           temp.pop_back();//再返回父节点之前,删除路径上确当前结点。
        return buffer;
        
        
    }
};//第一种解决办法
class Solution {
public:
     



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: