C语言实现二叉树的前序遍历
时间: 2023-11-22 13:04:49 浏览: 96
c实现二叉树先序层序遍历
5星 · 资源好评率100%
C语言实现二叉树的前序遍历可以通过递归和非递归两种方式实现。
递归实现前序遍历:
```c
void preorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->val); // 先访问根节点
preorderTraversal(root->left); // 再访问左子树
preorderTraversal(root->right); // 最后访问右子树
}
```
非递归实现前序遍历:
```c
void preorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
TreeNode* stack[1000]; // 定义一个栈
int top = -1; // 栈顶指针初始化为-1
stack[++top] = root; // 根节点入栈
while (top >= 0) {
TreeNode* node = stack[top--]; // 出栈
printf("%d ", node->val); // 访问节点
if (node->right != NULL) { // 右子树先入栈
stack[++top] = node->right;
}
if (node->left != NULL) { // 左子树后入栈
stack[++top] = node->left;
}
}
}
```
阅读全文