)遍历一个二又树 查找 给出 以X节点为根的树的高度 void find( BiTree *T , int X ) I,用C语言写
时间: 2024-03-23 22:38:16 浏览: 62
基于C语言的数据结构-二叉搜索树bitTree
以下是用C语言实现遍历二叉树查找以X节点为根的树的高度的代码:
```c
typedef struct BiTNode {
int data; // 数据域
struct BiTNode *lchild, *rchild; // 左右孩子指针
} BiTNode, *BiTree;
/* 计算以P为根节点的树的高度 */
int getHeight(BiTree p) {
if (!p) { // 如果节点为空,返回0
return 0;
} else { // 否则递归计算左右子树的高度,取较大值并加1
int leftHeight = getHeight(p->lchild);
int rightHeight = getHeight(p->rchild);
return leftHeight > rightHeight ? leftHeight + 1 : rightHeight + 1;
}
}
/* 查找以X节点为根的树的高度 */
void find(BiTree T, int X) {
if (!T) { // 如果树为空,直接返回
return;
}
if (T->data == X) { // 如果当前节点为X节点,计算以X为根的树的高度并输出
int height = getHeight(T);
printf("以%d节点为根的树的高度为%d\n", X, height);
}
find(T->lchild, X); // 递归查找左子树
find(T->rchild, X); // 递归查找右子树
}
```
使用方法:
假设有一颗二叉树如下:
```
1
/ \
2 3
/ \
4 5
```
我们要查找以节点2为根的树的高度,可以这样调用find函数:
```c
BiTree T = createBiTree(); // 先创建一颗二叉树
find(T, 2); // 查找以2节点为根的树的高度
```
输出结果为:
```
以2节点为根的树的高度为2
```
阅读全文