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

    地址 https://www.acwing.com/problem/content/description/45/

    输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。

    从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

    给出二叉树如下所示,并给出num=225
         / 
        4   6
       /   / 
      12  13  6
     /      / 
    9    1  5   1
    
    输出:[[5,4,12,1],[5,6,6,5]]

    树的处理 一半是递归

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
       vector<vector<int>> ret;
    
    void findPathInner(TreeNode* root, int sum, vector<int> v)
    {
        sum -= root->val;
        v.push_back(root->val);
    
        if (sum == 0 && root->left == NULL && root->right == NULL) {
            ret.push_back(v);
            return;
        }
    
        if(sum <0 ) return;
    
    
        if (root->left != NULL) {
            findPathInner(root->left, sum, v);
        }
        if (root->right != NULL) {
            findPathInner(root->right, sum, v);
        }
    
    }
    
    
    vector<vector<int>> findPath(TreeNode* root, int sum) {
        if (root == NULL) return ret;
        if (sum == 0) return ret;
    
        vector<int> v;
        sum -= root->val;
        v.push_back(root->val);
        if (sum < 0) return ret;
        if (sum == 0) {
            ret.push_back(v);
            return ret;
        }
        if (root->left != NULL) {
            findPathInner(root->left, sum, v);
        }
        if (root->right != NULL) {
            findPathInner(root->right, sum, v);
        }
    
        return ret;
    }
    
    
    };
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    MyBatis的动态SQL语句这么厉害的!
    连接数据库,使用c3p0技术连接MySQL数据库
    Servlet 常见的乱码解决方案
    超级签具体实现
    Xcode报错You don’t have permission.
    SpringBoot+Mybatis整合实例
    恢复mysql数据库误删数据
    日期(date)运用座谈会
    程序猿日记--学习怎样学习
    服务器数据库密码忘记
  • 原文地址:https://www.cnblogs.com/itdef/p/11407027.html
Copyright © 2011-2022 走看看