nikunjsoni

894

May 8th, 2021
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. /**
  2.  * Definition for a binary tree node.
  3.  * struct TreeNode {
  4.  *     int val;
  5.  *     TreeNode *left;
  6.  *     TreeNode *right;
  7.  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
  8.  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  9.  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
  10.  * };
  11.  */
  12. class Solution {
  13. unordered_map<int, vector<TreeNode*>> memo;
  14. public:
  15.     vector<TreeNode*> allPossibleFBT(int n) {
  16.         vector<TreeNode*> ans;
  17.         if(memo.count(n)) return memo[n];
  18.         if(n == 1){
  19.             TreeNode *node = new TreeNode(0);
  20.             ans.push_back(node);
  21.             memo[n] = ans;
  22.         }
  23.         else{
  24.             for(int i=1; i<=n-2; i+=2){
  25.                 vector<TreeNode*> left = allPossibleFBT(i);
  26.                 vector<TreeNode*> right = allPossibleFBT(n-i-1);
  27.                 for(int i=0; i<left.size(); i++){
  28.                     for(int j=0; j<right.size(); j++){
  29.                         TreeNode *node = new TreeNode(0);
  30.                         node->left = left[i];
  31.                         node->right = right[j];
  32.                         ans.push_back(node);
  33.                     }
  34.                 }
  35.             }
  36.             memo[n] = ans;
  37.         }
  38.         return memo[n];
  39.     }
  40. };
Advertisement
Add Comment
Please, Sign In to add comment