您的位置:首页 > 职场人生

面试题23:从上往下打印二叉树

2015-10-24 11:19 441 查看
struct Stack
{
Tree *tree;
Stack *pNext;
};
void Push(Stack **pTop,Tree *tree)
{
if(pTop == NULL)
{
return ;
}
Stack *pStack =new Stack;
pStack->tree = tree;
pStack->pNext = (*pTop);
(*pTop) = pStack;
}
Tree *Pop(Stack **pTop)
{
if(pTop == NULL ||(*pTop) == NULL)
{
return NULL;
}
Stack *pDel = (*pTop);
Tree *tree = pDel->tree;
(*pTop) = (*pTop)->pNext;
delete pDel ;
pDel = NULL;
return tree;
}
void PushQueue(Stack **pTopOne,Tree *tree)
{
if(pTopOne == NULL)
{
return ;
}
Push(pTopOne,tree);
}
Tree *PopQueue(Stack **pTopOne,Stack **pTopTwo)
{
if((*pTopTwo) == NULL)
{
if((*pTopOne) == NULL)
{
return NULL;
}
while((*pTopOne) != NULL)
{
Push(pTopTwo,Pop(pTopOne));
}
}
return Pop(pTopTwo);
}
void Print(Tree *root)
{
Stack *pTopOne = NULL;
Stack *pTopTwo = NULL;
while(root)
{
cout<<root->nValue<<" ";
if(root->pLeft)
{
PushQueue(&pTopOne,root->pLeft);
}
if(root->pRight)
{
PushQueue(&pTopOne,root->pRight);
}
root = PopQueue(&pTopOne,&pTopTwo);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: