代码:
void returnleaf(struct TreeNode* root,int* p,int* n)
{
if(root==NULL) return;
returnleaf(root->left,p,n);
returnleaf(root->right,p,n);
if(root->left==NULL&&root->right==NULL)
{
p[*n]=root->val;
(*n)++;
}
}
bool leafSimilar(struct TreeNode* root1, struct TreeNode* root2){
int *p1=(int*)malloc(sizeof(int)*100);
int *p2=(int*)malloc(sizeof(int)*100);
int n1=0,n2=0;
returnleaf(root1,p1,&n1);
returnleaf(root2,p2,&n2);
for(int i=0;i<n1;i++)
if(p1[i]!=p2[i])
return false;
return true;
}
思路:
遍历二叉树,将树叶子的值存入数组当中。
补充一点其他的:
在函数中申请的数组生存域为函数内,如果返回数组的首地址,数组首地址以外的其他数组成员都会丢失,数组元素在没有初始化或者赋值时,其元素默认为相同。数组初始化时,能够用一个值初始化整个数组。