c语言实现:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isSameTree(struct TreeNode* p, struct TreeNode* q){
// head 左边,tail 右边
int head1 = 0, tail1 = 0;
int head2 = 0, tail2 = 0;
// 两棵树上的节点数目都在范围 [0, 100] 内
struct TreeNode *que1[101];
struct TreeNode *que2[101];
if (p == NULL && q == NULL)
return true;
else if (p == NULL || q == NULL)
return false;
[tail1++] = p;
que1[tail2++] = q;
que2
while (head1 < tail1 && head2 < tail2) {
struct TreeNode *node1 = que1[head1++];
struct TreeNode *node2 = que2[head2++];
if (node1->val != node2->val)
return false;
struct TreeNode *left1 = node1->left;
struct TreeNode *right1 = node1->right;
struct TreeNode *left2 = node2->left;
struct TreeNode *right2 = node2->right;
if ((left1 == NULL) ^ (left2 == NULL))
return false;
if ((right1 == NULL) ^ (right2 == NULL))
return false;
if (left1)
[tail1++] = left1;
que1if (right1)
[tail1++] = right1;
que1if (left2)
[tail2++] = left2;
que2if (right2)
[tail2++] = right2;
que2}
return head1 == tail1 && head2 == tail2;
}