int* PrintFromTopToBottom(struct TreeNode* root, int* returnSize ) {
// write code here
//层次遍历
if(!root){
return NULL;
}
//数组tree用于存储已访问过的结点的值,数组temp用于存储访问到的结点地址
//添上首尾指针,使temp在逻辑上形成一个队列,n用于记录结点数
int *tree=malloc(1000*sizeof(int)),*temp[1000],top=-1,rear=-1,n=0;
struct TreeNode* p=root;
temp[++top]=p;
while(top!=rear){
p=temp[++rear];
tree[n++]=*temp[rear];
if(p->left){
temp[++top]=p->left;
}
if(p->right){
temp[++top]=p->right;
}
}
*returnSize=n;
return tree;
}

京公网安备 11010502036488号