zoukankan      html  css  js  c++  java
  • 113. Path Sum II (Tree; DFS)

    Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.

    For example:
    Given the below binary tree and sum = 22,

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

    return

    [
       [5,4,11,2],
       [5,8,4,5]
    ]
    
    struct TreeNode {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    class Solution {
    public:
        vector<vector<int>> pathSum(TreeNode *root, int sum) {
            pathGroup.clear();
            if(!root) return pathGroup;
      
            target = sum;
            vector<int> path;
            preOrder(root,0,path);
            return pathGroup;
            
        }
        void preOrder(TreeNode* node,int sum,vector<int> path){
            sum = node->val + sum;
            path.push_back(node->val);
            if(node->left)
            {           
                preOrder(node->left,sum,path);
            }
           
            if(node->right)
            {           
                preOrder(node->right,sum,path);
            }
            
            if(!node->left && !node->right)
            {
                if(sum==target)
                {
                    pathGroup.push_back(path);
                }        
            }
        }
    private:
        int target;
        vector<vector<int>> pathGroup;
    };
  • 相关阅读:
    多任务拷贝小案例
    进程池
    进程间的通信
    互斥锁
    创建函数/类的线程
    udp/tcp流程
    发布模块
    私有属性/方法的访问
    深入了解jQuery之整体架构
    (转)前端面试题
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4854201.html
Copyright © 2011-2022 走看看