层次遍历的时候用到了,STL中的队列。
void LevelOrder(BtNode *ptr)
{
queue<BtNode*> que;
que.push(ptr);
while (!que.empty())
{
BtNode * temp = que.front();
if(temp->leftchild != NULL)
que.push(temp->leftchild);
if(temp->rightchild != NULL)
que.push(temp->rightchild);
que.pop();
printf("%c ", temp->data);
}
}
int Level_K_prin(BtNode *ptr,int k,int count_tt) //count_tt代表从那一层开始,0或1
{
// static int count_tt = 1;
if (count_tt == k)
{
printf("%c ", ptr->data);
return k;
}
if (ptr->leftchild != NULL)
{
//count_tt += 1;
Level_K_prin(ptr->leftchild, k,count_tt+1 );
}
if(ptr->rightchild != NULL)
{
//count_tt += 1;
Level_K_prin(ptr->rightchild, k,count_tt+1);
}
}