zoukankan      html  css  js  c++  java
  • 剑指offer:二叉树中和为某一值得路径

    题目描述

    输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
     
    思路: 因为该题是输出符合整数的返回值,所以必定涉及到树的遍历,这里是根节点到各个节点的路径和,于是思考DFS
    算法来接,每次递归只要判断当当前的target值是否为零并且左右子树是否全为空(叶子节点),如果满足就加入数组,递归
    到最后一个子节点还不满足,则pop_back,当然有可能当前节点值已经满足当还不是叶子节点,这时候任然不满足条件,要继
    续递归下去到叶子节点,然后target满足才可以加入数组。
     
    代码:
    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };*/
    class Solution {
    public:
        vector<vector<int>> res;
        vector<int> path;
        void find(TreeNode* root, int sum){
            if(root == nullptr) return;
            path.push_back(root -> val);
            sum -= root -> val;
            if(sum == 0 && !root -> left && !root->right) res.push_back(path);
            else{
                if(root -> left) find(root -> left, sum);
                if(root -> right) find(root -> right, sum);
            }
            path.pop_back();
        }
        vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
            find(root, expectNumber);
            return res;
        }
    };
  • 相关阅读:
    发布基于C#的机器视觉库 *版本1.0.1*
    5月28日介绍这几年机器学习经历的讲演材料
    初识 PLINQ
    推荐博文:鸟瞰淘宝开放平台
    发布一款基于C#的网络爬虫程序
    发布基于C#的网络爬虫程序 *版本1.0.1*
    神秘园与班得瑞
    发布一款基于C#的机器视觉库
    《阿凡达》观影归来
    朝花夕识 和 Google Goggles 的差别
  • 原文地址:https://www.cnblogs.com/BillowJ/p/12730235.html
Copyright © 2011-2022 走看看