用C语言实现下图所示的二叉树的基本操作,具体要求如下: (1)创建下图所示的二叉树; (2)完成先序、中序和后序遍历二叉树的算法; (3)求二叉树的高度。
时间: 2024-11-10 22:11:32 浏览: 17
在C语言中,我们可以使用结构体来表示二叉树节点,并提供相应的函数来创建树、遍历和计算高度。以下是基本的操作步骤:
1. **创建二叉树**:
```c
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建一个新节点
TreeNode* createNode(int value) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
if (!newNode) {
printf("Memory allocation failed!\n");
return NULL;
}
newNode->val = value;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 构建给定示意图的二叉树(假设数组values存储了节点值)
void buildTree(TreeNode*** root, int values[], int start, int end) {
// ... 使用递归实现从数组构建树 ...
}
```
2. **遍历二叉树**:
- **先序遍历**(根-左-右):
```c
void preOrderTraversal(TreeNode* node) {
if (node != NULL) {
printf("%d ", node->val); // 先访问当前节点
preOrderTraversal(node->left);
preOrderTraversal(node->right);
}
}
// 示例调用:preOrderTraversal(*root);
```
- **中序遍历**(左-根-右):
```c
void inOrderTraversal(TreeNode* node) {
if (node != NULL) {
inOrderTraversal(node->left);
printf("%d ", node->val);
inOrderTraversal(node->right);
}
}
// 示例调用:inOrderTraversal(*root);
```
- **后序遍历**(左-右-根):
```c
void postOrderTraversal(TreeNode* node) {
if (node != NULL) {
postOrderTraversal(node->left);
postOrderTraversal(node->right);
printf("%d ", node->val);
}
}
// 示例调用:postOrderTraversal(*root);
```
3. **计算二叉树的高度**:
```c
int heightOfBinaryTree(TreeNode* root) {
if (root == NULL) {
return 0;
} else {
int leftHeight = heightOfBinaryTree(root->left);
int rightHeight = heightOfBinaryTree(root->right);
return (leftHeight > rightHeight ? leftHeight : rightHeight) + 1;
}
}
```
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![doc](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://img-home.csdnimg.cn/images/20241231044937.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://img-home.csdnimg.cn/images/20241231045053.png)