zoukankan      html  css  js  c++  java
  • Path Sum

    bool hasPathSum(TreeNode *root, int sum)
          {
              if (root == nullptr)return false;
              if (root->left == nullptr && root->right == nullptr)
                  return sum == root->val;
    
              return hasPathSum(root->left, sum - root->val) || hasPathSum(root->right, sum - root->val);
          }
    View Code

    第一题比较简单,递归完成。

    第二题需要记录路径,因此当找到满足条件的左子树时,保存结果但不能返回,因为还需查看右子树。

    vector<vector<int>>pathSum(TreeNode *root, int sum)
          {
              vector<vector<int>> result;
              vector<int> cur;
              pathSum(root, sum, cur, result);
              return result;
    
          }
          void pathSum(TreeNode *root, int gap, vector<int> &cur, vector<vector<int>> &result)
          {
              if (root == nullptr)return;
    
              cur.push_back(root->val);//先压入
              //如果是叶子结点且满足条件,保留
              if (root->left == nullptr && root->right == nullptr)
              {
                  if (root->val == gap)
                      result.push_back(cur);
                  //此时还不能返回
              }
    
              pathSum(root->left, gap - root->val, cur, result);
              pathSum(root->right, gap - root->val, cur, result);
    
              cur.pop_back();//注意弹出已经判断过的结点
          }
    View Code
  • 相关阅读:
    SpringMVC 通过post接收form参数或者json参数
    Web验证码图片的生成-基于Java的实现
    springmvc防止表单重复提交demo
    MyBatis多表映射demo
    mybatis配置ehcache缓存
    Oracle数据库Where条件执行顺序
    省选模拟10
    省选模拟8
    省选模拟9
    省选模拟7
  • 原文地址:https://www.cnblogs.com/573177885qq/p/5603729.html
Copyright © 2011-2022 走看看