zoukankan      html  css  js  c++  java
  • 二叉树中和为某一值的路径

    思路:

    题目的路径是根节点到叶节点,所以这个整数肯定是足够大的,一定能到叶节点的。

    使用深度优先遍历方法,利用栈的思想,先将叶节点放入栈,最后记得弹出,返回父节点。

     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         if(!root) return res;
    15         dfs(root,expectNumber);
    16         return res;
    17     }
    18     //深度优先遍历
    19     void dfs(TreeNode* root,int num){
    20         path.push_back(root->val);
    21         //已经到了叶子节点了,返回路径
    22         if(root->val==num && !root->left && !root->right) res.push_back(path);
    23         //没到叶子节点
    24         if(root->val!=num && root->left) dfs(root->left,num-root->val);
    25         if(root->val!=num && root->right) dfs(root->right,num-root->val);
    26         //将最后一层的左叶节点pop出去,返回父节点,遍历右子节点
    27         path.pop_back();
    28     }
    29 private:
    30     vector<vector<int> > res;
    31     vector<int> path;
    32 };
  • 相关阅读:
    Hexo yilia 主题启用及相关设置
    Hexo Next 主题启用及相关设置
    值得一用的 Windows 软件清单
    ES6新特性2
    ES6新特性1
    手写promise第三天
    手写promise第一天
    Generator异步函数
    函子Functor
    柯里化函数组合的学习
  • 原文地址:https://www.cnblogs.com/pacino12134/p/11156038.html
Copyright © 2011-2022 走看看