• [LeetCode] 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.

    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        int summary;
        bool has;
        bool hasPathSum(TreeNode *root, int sum) {
            if(root==NULL)
                return false;
            this->summary = sum;
            this->has = false;
            fun(root);
        return has;
        }
    private:
        void fun(TreeNode *p)
        {
           if(p!=NULL)
           {
               if(p->left==NULL && p->right==NULL && p->val==this->summary)
               {
                   this->has = true;
                   return ;
               }
               else
               {
                   if(p->left != NULL)
                   {
                       p->left->val += p->val;
                       fun(p->left);
                   }
                   if(p->right != NULL)
                   {
                       p->right->val += p->val;
                       fun(p->right);
                   }
               }
           
           }//end if
        
        }
    };

    思路:参考Trie树的思想,树的每个结点带有需要的信息,这里每个结点的值是从根节点到此结点的路径和,然后只需判断叶子节点上的值是不是题中要求的sum就可以了。

  • 相关阅读:
    java Boolean和boolean的区别
    stack.isEmpty()和empty()
    mysql中文、英文别名排序问题,order by 关键字详解
    数组中array==null和array.length==0的区别
    7.9总结
    7.8总结
    6.25总结
    6.27总结
    6.29总结
    6.28总结
  • 原文地址:https://www.cnblogs.com/Xylophone/p/3869550.html
Copyright © 2020-2023  润新知