• LeetCode113 路径总和


    给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。

    说明: 叶子节点是指没有子节点的节点。

    示例:
    给定如下二叉树,以及目标和 sum = 22,

    5
    /
    4 8
    / /
    11 13 4
    / /
    7 2 5 1

    递归就可以,但还是要注意一个是不能地轨道nullptr,否则一个叶子节点会添加两次;而且要注意传引用,提高效率。

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 private: 
    12     vector<vector<int>> ret;
    13 public:
    14     vector<vector<int>> pathSum(TreeNode* root, int sum) {
    15         if(root==nullptr)
    16             return {};
    17         ret.clear();
    18         int cursum=0;
    19         vector<int> temp;
    20         recursive_find(root,cursum,sum,temp);
    21         return ret;
    22     }
    23 
    24     void recursive_find(TreeNode* pNode, int& cursum, int& aim,vector<int>& temp){
    25         if(pNode->left==nullptr && pNode->right==nullptr){
    26             if(cursum+pNode->val==aim){
    27                 temp.push_back(pNode->val);
    28                 ret.push_back(temp);
    29                 temp.pop_back();
    30             }
    31             return;
    32         }
    33         cursum+=pNode->val;
    34         temp.push_back(pNode->val);
    35         if(pNode->left!=nullptr)
    36             recursive_find(pNode->left,cursum,aim,temp);
    37         if(pNode->right!=nullptr)
    38             recursive_find(pNode->right,cursum,aim,temp);
    39         temp.pop_back();
    40         cursum-=pNode->val;
    41         return ;
    42     }
    43 };
  • 相关阅读:
    android 学习笔记1- 应用程序的资源管理
    idea shortcut
    关于layou以及layout 上的控件
    java 之深拷贝与浅拷贝
    Java中static静态方法可以继承吗?可以被重写吗?
    String StringBuff StringBuilder 使用。
    linux 中断
    设备类class理解
    linux 内核符号
    QT 调试输出格式
  • 原文地址:https://www.cnblogs.com/rookiez/p/13306272.html
Copyright © 2020-2023  润新知