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

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 nodeif (tree->right != NULL){// The node isn't tempNodeif (tree->right != tempNode){Push(tree, stack);}// The node is tempNodeelse{printf("%d\n", tree->data);tempNode = tree;tree = NULL;continue;}tree = tree->right;tempNode = tree;}// If the node doesn't have right node, then printfelse{printf("%d\n", tree->data);if (tree->left == tempNode){tempNode = tree;}tree = tree->right;//tempNode = tree;}}}}

,没有绝望的处境,只有对处境绝望的人。

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

相关文章:

你感兴趣的文章:

标签云: