二叉树后序遍历的非递归算法

来源:互联网 发布:智商高 成功 知乎 编辑:程序博客网 时间:2024/06/04 19:22
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;            }        }    }}

0 0
原创粉丝点击