Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Node Merge(const Node& n1, const Node& n2) {
- // bases cases
- Node mergedNode = Node();
- mergedNode.name = n1.name);
- mergedNode.value = n2.value;
- // children
- int n1ChildrenSize = n1.children.size();
- int n2ChildrenSize = n2.children.size();
- vector<Node> mergedChildren;
- vector<bool> isAvailableN1(n1ChildrenSize,true);
- vector<bool> isAvailableN2(n2ChildrenSize,true);
- for(int index1=0;index1<n1ChildrenSize; index1++){
- for(index2=0;index2<n2ChildrenSize;index2++){
- if(isAvailableN2[index]==true && n1.children[index1]->name == n2.children[index2]->name){
- mergedChildren.push_back(merge(n1.children[index1],n2.children[index2]));
- isAvailableN1[index1] = false;
- isAvailableN2[index2] = false;
- }
- }
- }
- for(int index1=0;index1<n1ChildrenSize; index1++){
- if(isAvailableN1[index1]==true){
- mergedChildren.push_back(n1.children[index1]);
- }
- }
- for(int index2=0;index2<n2ChildrenSize; index2++){
- if(isAvailableN2[index2]==true){
- mergedChildren.push_back(n2.children[index2]);
- }
- }
- mergedNode.children = mergedChildren;
- return mergedNode;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement