先序遍历二叉树c非递归
时间: 2024-05-23 20:07:51 浏览: 79
先序遍历二叉树的非递归实现可以使用栈来完成。具体步骤如下:
1. 先将根节点压入栈中;
2. 当栈不为空时,弹出栈顶元素并输出该元素的值;
3. 若该节点存在右孩子,则将右孩子压入栈中;
4. 若该节点存在左孩子,则将左孩子压入栈中;
5. 重复步骤2~4,直到栈为空。
以下是C语言实现代码:
```c
void PreorderTraversal(BinTree BT) {
if (BT == NULL) {
return;
}
Stack S = CreateStack(MAXSIZE);
BinTree p = BT;
while (p || !IsEmpty(S)) {
while (p) {
printf("%c", p->Data);
Push(S, p);
p = p->Left;
}
if (!IsEmpty(S)) {
p = Pop(S);
p = p->Right;
}
}
}
```
阅读全文