• 剑指offer---二叉树中和为某一值的路径


    题目:二叉树中和为某一值的路径

    要求:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

     1 /*
     2 struct TreeNode {
     3     int val;
     4     struct TreeNode *left;
     5     struct TreeNode *right;
     6     TreeNode(int x) :
     7             val(x), left(NULL), right(NULL) {
     8     }
     9 };*/
    10 class Solution {
    11 public:
    12     vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
    13 
    14     }
    15 };

    解题代码:

     1 /*
     2 struct TreeNode {
     3     int val;
     4     struct TreeNode *left;
     5     struct TreeNode *right;
     6     TreeNode(int x) :
     7             val(x), left(NULL), right(NULL) {
     8     }
     9 };*/
    10 class Solution {
    11 public:
    12     vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
    13         vector<vector<int> > res;
    14         vector<int> path;
    15         int currentSum = 0;
    16         if(root == NULL)
    17             return res;
    18         search(root, expectNumber, path, res, currentSum);
    19         return res;
    20     }
    21 
    22     void search(TreeNode* proot, int expectNumber, vector<int> &path,
    23             vector<vector<int> > &res, int currentSum){
    24 
    25         currentSum += proot->val;
    26         path.push_back(proot->val);
    27 
    28         bool isLeaf = proot->left == NULL && proot->right == NULL;
    29         // 
    30         if(currentSum == expectNumber && isLeaf){
    31             res.push_back(path);
    32             path.pop_back();
    33             return ;
    34         }
    35         //
    36         if(proot->left != NULL)
    37             search(proot->left, expectNumber, path, res, currentSum);
    38         if(proot->right != NULL)
    39             search(proot->right, expectNumber, path, res, currentSum);
    40         path.pop_back();
    41     }
    42 };

    时间有限,先把答案放到这里,有时间再过来添加详细内容。

  • 相关阅读:
    高仿爱鲜蜂购物应用源码
    控制ClistCtrl的滚动的位置
    VC保存当面某个区域的图片
    MFC 屏幕截图方法
    回调函数使用(三)
    回调函数使用方法二
    VS2010编译Boost 1.57 静态链接库
    Windows7+VS2010下OpenGL的环境配置
    CxImage图像库的使用 .
    VS2010+PCL配置
  • 原文地址:https://www.cnblogs.com/iwangzhengchao/p/9827252.html
Copyright © 2020-2023  润新知