C++ code supposed to work similar are behaving differently

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];
}
Comments (0)