层次遍历求二叉树高度C语言
时间: 2024-10-15 13:02:59 浏览: 28
层次遍历(BFS,即广度优先搜索)通常使用队列数据结构来实现二叉树的高度查找。这里是一个简单的C语言代码示例,用于计算给定二叉树的高度:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
int height(TreeNode* root) {
if (root == NULL) { // 空树的高度为0
return 0;
}
int level = 0; // 当前层数
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
int size = q.size(); // 当前层的节点数量
level++;
for (int i = 0; i < size; i++) {
TreeNode* node = q.front();
q.pop();
if (node->left != NULL) {
q.push(node->left);
}
if (node->right != NULL) {
q.push(node->right);
}
}
}
return level;
}
// 主函数测试
int main() {
// 初始化一个二叉树实例并替换此处代码
TreeNode* root = ...;
int treeHeight = height(root);
printf("二叉树的高度为: %d\n", treeHeight);
return 0;
}
```
这个程序首先检查根节点是否为空,然后创建一个队列并将根节点放入。接着进入循环,直到队列为空。每次循环,都会计算出当前层的节点数量,然后访问每个节点的左右子节点,并将其加入队列。当队列为空时,说明已经遍历完所有层级,返回此时的层数即为树的高度。
阅读全文