C语言创建一个先序遍历,中序遍历,后序遍历,可以求深度的二叉树
时间: 2024-10-24 13:02:47 浏览: 24
在C语言中,我们通常会用结构体表示二叉树节点,并通过递归函数实现二叉树的遍历。这里分别介绍先序遍历、中序遍历和后序遍历,以及计算二叉树深度的算法。
1. **二叉树节点结构** (TreeNode.h)
```c
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
```
2. **先序遍历(Preorder Traversal)**
```c
void preorderTraversal(TreeNode* root) {
if (root != NULL) {
printf("%d ", root->val); // 先访问根节点
preorderTraversal(root->left);
preorderTraversal(root->right);
}
}
```
3. **中序遍历(Inorder Traversal)**
```c
void inorderTraversal(TreeNode* root) {
if (root != NULL) {
inorderTraversal(root->left);
printf("%d ", root->val); // 中间访问根节点
inorderTraversal(root->right);
}
}
```
4. **后序遍历(Postorder Traversal)**
```c
void postorderTraversal(TreeNode* root) {
if (root != NULL) {
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->val); // 最后访问根节点
}
}
```
5. **计算二叉树深度(Depth of a Binary Tree)**
```c
int maxDepth(TreeNode* root) {
if (root == NULL) return 0;
else {
int leftDepth = maxDepth(root->left);
int rightDepth = maxDepth(root->right);
return (leftDepth > rightDepth) ? leftDepth + 1 : rightDepth + 1;
}
}
```
阅读全文