数据结构二叉树C语言先序遍历数组
时间: 2024-12-22 14:29:30 浏览: 6
数据结构中的二叉树是一种非线性的数据组织形式,其中每个节点最多有两个子节点。先序遍历是指按照“根-左-右”的顺序访问二叉树中的所有节点。
在C语言中,如果我们把二叉树的节点信息存储在一个数组里来模拟这个过程,可以采用递归或栈的方式实现先序遍历。以下是简单的递归方法:
```c
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
void preorderTraversal(int arr[], int size, int index = 0) {
if (index < size) {
// 先访问当前节点
printf("%d ", arr[index]);
// 再递归遍历左子树
preorderTraversal(arr, size, index * 2 + 1);
// 最后递归遍历右子树
preorderTraversal(arr, size, index * 2 + 2);
}
}
```
在这个数组表示法中,`arr[index]`代表当前节点,`arr[index * 2 + 1]`和`arr[index * 2 + 2]`分别代表左子节点和右子节点(假设二叉树的每个节点都有两个子节点)。如果某个节点没有右孩子,那么`arr[index * 2 + 2]`会被视为无效索引。
阅读全文