typedef struct node
{
char data;
node *lchild;
node *rchild;
}*BinaryTree;
void PreorderTraverseTree(BinaryTree root)
{
if (NULL == root)
{
return;
}
stack<node*> chStack;
chStack.push(root);
while (!chStack.empty())
{
node *pCur = chStack.top();
cout << pCur->data << " ";
chStack.pop();
if (NULL != root->rchild)
{
chStack.push(root->rchild);
}
if (NULL != root->lchild)
{
chStack.push(root->lchild);
}
}
}
void InorderTreaverseTree(BinaryTree root)
{
if (NULL == root)
{
return;
}
stack<node*> chStack;
node *pCur = root;
while (!chStack.empty() || pCur != NULL)
{
if (pCur != NULL)
{
chStack.push(pCur);
pCur = pCur->lchild;
}
else
{
pCur = chStack.top();
cout << pCur->data << " ";
chStack.pop();
pCur = pCur->rchild;
}
}
}
void PostorderTraverseTree(BinaryTree root)
{
if (NULL == root)
{
return;
}
stack<node*> traverseStack,vistStack;
traverseStack.push(root);
while (!traverseStack.empty())
{
node *pCur = traverseStack.top();
traverseStack.pop();
vistStack.push(pCur);
if (pCur->lchild != NULL)
{
traverseStack.push(pCur->lchild);
}
if (pCur->rchild != NULL)
{
traverseStack.push(pCur->rchild);
}
}
while (!vistStack.empty())
{
node *pCur = vistStack.top();
vistStack.pop();
cout << pCur->data << " ";
}
}
二叉树非递归,前中后序遍历
最新推荐文章于 2023-02-06 18:38:34 发布