TreeNodePtr createTreeWithLevelOrder(int *data, int size) {
QueuePtr Q;
Q=InitQueue();
TreeNodePtr T;
ListNodePtr find;
int i;
TreeNodePtr Node;
TreeId=1;
for(i=0;i<size;i++)
{
Node=createTreeNode(data[i],NULL,NULL);
EnQueue(Q,Node);
}
T=GetHead(Q);
if(T->val==-1)
{
free(Q);
return NULL;
}
while(!QueueEmpty(Q))
{
Node=GetHead(Q);
DeQueue(Q);
if(Node->val!=-1){
find=Q->dummyHead->next;
while(find)
{
if(find->node->id==(2*(Node->id)))
{
if(find->node->val==-1)
{
Node->left=NULL;
}
else
{
Node->left=find->node;
}
if(find->next)
{
find=find->next;
if(find->node->val==-1)
{
Node->right=NULL;
}
else
{
Node->right=find->node;
}
}
break;
}
else find=find->next;
}
}
}
free(Q);
return T;
}
這個函式是通過佇列實作層次遍歷構建二叉樹,想問一下哪里出了問題,謝謝
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/277178.html
標籤:C語言
上一篇:手把手教你用C++搭建作業系統
