/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param t1 TreeNode类 * @param t2 TreeNode类 * @return TreeNode类 */ #include<stdlib.h> #include<stdbool.h> typedef struct queue { struct TreeNode* data[500]; int size; }queue; queue* init_queue() { queue* my_queue = (queue*)malloc(sizeof(queue)); if (my_queue == NULL) { return NULL; } for (int i = 0; i < 500; i++) { my_queue->data[i] = NULL; } my_queue->size = 0; return my_queue; } void push_queue(queue* my_queue, struct TreeNode* data) { if (my_queue == NULL) { return; } my_queue->data[my_queue->size] = data; my_queue->size++; } struct TreeNode* pop_queue(queue* my_queue) { if (my_queue == NULL||my_queue->size==0) { return NULL; } struct TreeNode* value = my_queue->data[0]; for (int i = 0; i < my_queue->size-1; i++) { my_queue->data[i] = my_queue->data[i+1]; } my_queue->size--; return value; } bool isEmpty(queue* my_queue) { if (my_queue == NULL || my_queue->size == 0) { return true; } return false; } struct TreeNode* mergeTrees(struct TreeNode* t1, struct TreeNode* t2) { // write code here queue* my_queue1 = init_queue(); queue* my_queue2 = init_queue(); if (t1 == NULL) { return t2; } if (t2 == NULL) { return t1; } if (t1 != NULL && t2 != NULL) { t1->val += t2->val; push_queue(my_queue1, t1); push_queue(my_queue2, t2); } while (!isEmpty(my_queue1)&&!isEmpty(my_queue2)) { struct TreeNode* tem = malloc(sizeof(struct TreeNode)); struct TreeNode* cur1 =pop_queue(my_queue1); struct TreeNode* cur2 =pop_queue(my_queue2); if (cur1->left != NULL) { if (cur2->left != NULL) { cur1->left->val += cur2->left->val; push_queue(my_queue2, cur2->left); push_queue(my_queue1, cur1->left); } } else { if (cur2->left != NULL) { tem= cur2->left; cur1->left = tem; } } if (cur1->right != NULL) { if (cur2->right != NULL) { cur1->right->val += cur2->right->val; push_queue(my_queue2, cur2->right); push_queue(my_queue1, cur1->right); } } else { if (cur2->right != NULL) { tem= cur2->right; cur1->right = tem; } } } return t1; }