• leetcode_question_112 Path Sum


    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.

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

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

    return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.

    DFS:

    bool findPathSum(TreeNode* root, vector<int> &path, int sum)
        {
        	path.push_back(root->val);
    		if(root->left == NULL && root->right == NULL){
    			vector<int>::iterator it = path.begin();
    			int tmpsum = 0;
    			for(; it != path.end(); ++it)
    				tmpsum += *it;
    			path.pop_back();
    			if(tmpsum == sum)
    				return true;
    			else 
    				return false;
    		}
    		bool flag = false;
    		if(root->left)
    			flag = findPathSum(root->left,path,sum);
    		if(!flag && root->right)
    			flag = findPathSum(root->right,path,sum);
    		path.pop_back();
    		return flag;
    	}
    	bool hasPathSum(TreeNode *root, int sum) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            if(root == NULL)
    			return false;
    		vector<int> path;
    		return findPathSum(root, path,sum);
        }



  • 相关阅读:
    水木清华小爬虫
    不让复制是不可能的----js获取选中文字
    [转]nonlocal和global
    LLVM和clang
    Megcup2017 Dogfood
    史莱姆自爆问题
    前端颜色表
    [转]论文十诫
    返利网盈利模式
    事务的四个属性ACID
  • 原文地址:https://www.cnblogs.com/james1207/p/3331361.html
Copyright © 2020-2023  润新知