⭐2-Sum Binary Tree

Traverse the Tree and extract Inorder

/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
 
vector<int> inorder;

void getInorder(TreeNode *root) {
    if(!root) return;
    
    getInorder(root->left);
    inorder.push_back(root->val);
    getInorder(root->right);
}

int Solution::t2Sum(TreeNode* A, int B) {
    inorder.clear();
    getInorder(A);
    int p1 = 0, p2 = inorder.size() - 1;
    
    while(p1 < p2) {
        if(inorder[p1] + inorder[p2] < B)
            p1++;
        else if(inorder[p1] + inorder[p2] > B)
            p2--;
        else 
            return 1;
    }
    
    return 0;
}

Using Sorted Linked List from BST

Time Complexity: O(n)O(n)​

Space Complexity: O(1)O(1)​

Last updated