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 };
  • 相关阅读:
    Codeforces 1017E The Supersonic Rocket 凸包,计算几何,字符串,KMP
    Codeforces 1017F The Neutral Zone 数论
    51Nod1253 Kundu and Tree 容斥原理
    扩展中国剩余定理 (exCRT) 的证明与练习
    简单布局
    自创一个百变布局
    ajax上传文件
    DIV+CSS布局
    windowbuilder
    SWT开发工具
  • 原文地址:https://www.cnblogs.com/pacino12134/p/11156038.html
Copyright © 2011-2022 走看看