如何用C语言编写一个非递归的中序遍历二叉树的程序?
时间: 2024-10-25 08:15:56 浏览: 35
在C语言中,非递归地遍历二叉树通常使用栈数据结构,这里提供一个使用迭代法实现的中序遍历(先左后根后右)的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 助手函数,用于入栈
void push(TreeNode** root, TreeNode* node) {
if (node != NULL) {
stack.push(node);
TreeNode* temp = node->left;
while (temp != NULL) {
push(&stack, temp);
temp = temp->right;
}
}
}
// 助手函数,用于出栈并打印节点值
void popAndPrint(TreeNode** root, TreeNode* node) {
if (node == NULL) return;
printf("%d ", node->val); // 打印节点值
TreeNode* temp = node->right;
while (temp != NULL) {
popAndPrint(root, temp);
temp = temp->left;
}
stack.pop(); // 出栈当前节点
}
// 主函数,输入根节点,开始中序遍历
void inorderTraversal(TreeNode* root) {
stack stack;
push(&stack, root);
}
int main() {
// 假设已创建好一个二叉树实例
TreeNode* root = ...;
inorderTraversal(root);
return 0;
}
阅读全文
相关推荐
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)