后序遍历非递归C语言代码
时间: 2024-06-13 12:01:37 浏览: 96
C语言数据结构中序遍历的非递归算法
后序遍历是二叉树遍历的一种方式,它的遍历顺序是:先访问左子树,再访问右子树,最后访问根节点。下面是后序遍历的非递归C语言代码:
```
void PostorderTraversal(TreeNode* root)
{
if (root == NULL)
return;
TreeNode* stack[MAX_SIZE];
int top = -1;
TreeNode* lastVisit = NULL; // 上一次访问的节点
while (root != NULL || top != -1) {
while (root != NULL) { // 遍历左子树
stack[++top] = root;
root = root->left;
}
TreeNode* node = stack[top];
if (node->right == NULL || node->right == lastVisit) { // 右子树为空或已经遍历过
printf("%d ", node->val);
top--;
lastVisit = node;
} else { // 遍历右子树
root = node->right;
}
}
}
```
阅读全文