• 【剑指offer】二叉树中和为某一值的路径


    题目链接:二叉树中和为某一值的路径

     

    题意:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)

     

    题解:用一个一维数组记录路径。每次存储一下当前节点的值,如果和当前期望值不一样,就DFS左右子树,并将期望值减去当前值。直到最后这条路径的值满足,就将该路径存储进结果。不满足,就将一维数组清空。

    DFS的过程中,预期值要减去当前节点值,才能判断是否这条路径上的总和为我们的预期值。

     

    代码:

    /*
    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> > ans;
        vector<int> tmp;
        vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
            if(root == NULL)    return ans;
            tmp.push_back(root->val);
            if(expectNumber == root->val && root->left == NULL  && root->right == NULL)
                ans.push_back(tmp);
            
            FindPath(root->left,expectNumber - root->val);
            FindPath(root->right,expectNumber - root->val);
            tmp.pop_back();
            return ans;
        }
    };
  • 相关阅读:
    C#匿名类与dynamic关键字有意思的玩法
    C#中参数化查询速度慢的原因
    拉姆达表达式的一些常用知识
    git的学习
    yield return的使用。。。
    C# Cache缓存的应用
    C# 异步编程,async与await的简单学习
    SSH
    SSM搭建手册
    PLsql快捷键
  • 原文地址:https://www.cnblogs.com/Asumi/p/12404710.html
Copyright © 2020-2023  润新知