二叉树的先序非递归方法遍历。c语言
时间: 2023-06-06 20:06:30 浏览: 119
二叉树的几种操作,包括递归先序建立二叉树、先序遍历、中序遍历、后序遍历、非递归的各种遍历
可以使用栈来实现二叉树的先序非递归方法遍历。具体步骤如下:
1. 将根节点入栈。
2. 当栈不为空时,重复以下步骤:
a. 弹出栈顶节点,输出该节点的值。
b. 如果该节点的右子树不为空,将右子树入栈。
c. 如果该节点的左子树不为空,将左子树入栈。
下面是 C 语言的代码实现:
```c
void preorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
Stack stack;
stackInit(&stack);
stackPush(&stack, root);
while (!stackEmpty(&stack)) {
TreeNode* node = stackTop(&stack);
stackPop(&stack);
printf("%d ", node->val);
if (node->right != NULL) {
stackPush(&stack, node->right);
}
if (node->left != NULL) {
stackPush(&stack, node->left);
}
}
stackDestroy(&stack);
}
```
其中,Stack 为栈的结构体,stackInit、stackPush、stackPop、stackTop、stackEmpty、stackDestroy 是栈的操作函数。TreeNode 为二叉树节点的结构体,val、left、right 分别表示值、左子树、右子树。
阅读全文