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;
        }
    };
  • 相关阅读:
    webrtc连接方法——TURN服务器和STUN服务器作用简介
    IM音视频即时通讯系统EasyRTC如何利用webrtc技术进行优化和发展?
    TSINGSEE青犀视频平台可以实现音视频混流吗?
    深入浅出Java 重定向和请求转发的区别
    特征工程-特征提取
    cart剪枝
    决策树算法简介
    逻辑回归介绍
    sklearn模型的保存和加载
    celery 定时任务时间篇
  • 原文地址:https://www.cnblogs.com/BillowJ/p/12730235.html
Copyright © 2011-2022 走看看