zoukankan      html  css  js  c++  java
  • 剑指offer-25.二叉树中和为某一值的路径

    0 题目

    输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

    1 分析

    深度优先遍历+回溯.

    出点就是,当target==0,且节点没有子树的时候。

        vector<vector<int>> FindPath(TreeNode *root, int target)
        {
            vector<vector<int>> ret;
            vector<int> tmp;
            aux(root, target, tmp, ret);
            return ret;
        }
    
        void aux(TreeNode *root, int target, vector<int> &tmp, vector<vector<int>> &ret)
        {
            if (root != nullptr)
            {
                tmp.push_back(root->val);
    
                if (target - root->val == 0 && root->left == nullptr && root->right == nullptr)
                {
                    ret.push_back(tmp);
                    // 这里pop的原因在于,下面需要return ,如果不pop会影响和偶棉的结果
                    tmp.pop_back();
                    return;
                }
    
                aux(root->left, target - root->val, tmp, ret);
                aux(root->right, target - root->val, tmp, ret);
                tmp.pop_back();
            }
        }
    

      

  • 相关阅读:
    ZD ZDC数据类型 sort
    常识
    面试
    无锡
    sqlldr return code
    025:为什么需要将Logger对象声明为private static final类型的
    中级职称
    《宪法》关于全国人民代表大会的规定
    python打包成exe
    请问.AE和PR有什么区别?
  • 原文地址:https://www.cnblogs.com/perfy576/p/8615086.html
Copyright © 2011-2022 走看看