Why do these two codes work differently for problem:
https://leetcode.com/problems/all-possible-full-binary-trees/
Code A:
vector<TreeNode*> allPossibleFBT(int N){
if(N % 2 == 0)
return vector<TreeNode*>();
map<int, vector<TreeNode*>> track;
track[1].push_back(new TreeNode(0));
for(int itr = 3; itr <= N; itr += 2){
for(int leftSize = 1; leftSize < itr - 1; leftSize += 2){
int rightSize = itr - 1 - leftSize;
for(auto leftTree: track[leftSize]){
TreeNode* tmp = new TreeNode(0);
tmp->left = leftTree;
for(auto rightTree: track[rightSize]){
tmp->right = rightTree;
track[itr].push_back(tmp);
}
}
}
}
return track[N];
}Code B:
vector<TreeNode*> allPossibleFBT(int N){
if(N % 2 == 0)
return vector<TreeNode*>();
map<int, vector<TreeNode*>> track;
track[1].push_back(new TreeNode(0));
for(int itr = 3; itr <= N; itr += 2){
for(int leftSize = 1; leftSize < itr - 1; leftSize += 2){
int rightSize = itr - 1 - leftSize;
for(auto leftTree: track[leftSize]){
for(auto rightTree: track[rightSize]){
track[itr].push_back(new TreeNode(0, leftTree, rightTree));
}
}
}
}
return track[N];
}