void PostOrderTraversal(TreeNode* binTree)
{
TreeNode* tree = binTree;
LinkStack* stack = CreateLinkStack();
TreeNode* tempNode = NULL;
while (tree || !IsEmpty(stack))
{
while (tree)
{
Push(tree, stack);
tree = tree->left;
}
if (!IsEmpty(stack))
{
tree = Pop(stack);
// Right has node
if (tree->right != NULL)
{
// The node isn't tempNode
if (tree->right != tempNode)
{
Push(tree, stack);
}
// The node is tempNode
else
{
printf("%d\n", tree->data);
tempNode = tree;
tree = NULL;
continue;
}
tree = tree->right;
tempNode = tree;
}
// If the node doesn't have right node, then printf
else
{
printf("%d\n", tree->data);
if (tree->left == tempNode)
{
tempNode = tree;
}
tree = tree->right;
//tempNode = tree;
}
}
}
}
二叉树后序遍历的非递归算法
最新推荐文章于 2022-07-30 16:08:18 发布