• 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.

    Subscribe to see which companies asked this question

    recursion版本

    bool hasPathSum(TreeNode* root, int sum) {
        if (!root)
            return false;
        if ((root->val == sum) && (root->left == nullptr && root->right == nullptr))
            return true;
        return hasPathSum(root->left, sum - root->left->val) || hasPathSum(root->right, sum - root->right->val);
    }

    non-recursion版本

    bool hasPathSum(TreeNode* root, int sum) {
        if (root == nullptr)
            return false;
        stack<TreeNode*> sta;
        sta.push(root);
        sum -= root->val;
        TreeNode* lastRoot = root;
        while (!sta.empty())
        {
            root = sta.top();
            if (lastRoot != root->right)
            {
                if (lastRoot != root->left) {
                    if (root->left != nullptr) {
                        sta.push(root->left);
                        sum -= root->left->val;
                        continue;
                    }
                }
                if (root->right != nullptr) {
                    sta.push(root->right);
                    sum -= root->right->val;
                    continue;
                }
                else if(root->left == nullptr && sum == 0)
                    return true;
            }
            lastRoot = root;
            sta.pop();
            sum += root->val;
        }
        return false;
    }
  • 相关阅读:
    VUE 入门基础(8)
    VUE 入门基础(7)
    VUE 入门基础(6)
    VUE 入门基础(5)
    VUE 入门基础(4)
    VUE 入门基础(3)
    线程的通信
    如何实现一个简单的RPC
    Java程序员必须掌握的线程知识-Callable和Future
    同步函数死锁现象
  • 原文地址:https://www.cnblogs.com/sdlwlxf/p/5223524.html
Copyright © 2020-2023  润新知