zoukankan      html  css  js  c++  java
  • 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);
        }



  • 相关阅读:
    python基础知识
    常见的python练习题
    常用的Git命令
    使用MySQL命令行备份和恢复数据库
    常用的MySQL命令
    常用的Linux命令
    Python 3 配置文件处理
    Python 3 MySQL数据库操作
    Python3 MySQL
    python BeautifulSoup4--例子
  • 原文地址:https://www.cnblogs.com/james1207/p/3331361.html
Copyright © 2011-2022 走看看