3)遍历一个二又树 查找 给出 以X节点为根的树的高度 void find( BiTree *T , int X )
时间: 2024-03-23 07:38:38 浏览: 41
好的,针对您的问题,以下是遍历一个二又树查找以X节点为根的树的高度的代码实现:
```c
typedef struct BiTree {
int data;
struct BiTree *lchild, *rchild;
}BiTree;
int getHeight(BiTree *T) { // 计算树的高度
if (T == NULL) return 0;
int leftHeight = getHeight(T->lchild);
int rightHeight = getHeight(T->rchild);
return (leftHeight > rightHeight) ? (leftHeight + 1) : (rightHeight + 1);
}
void find(BiTree *T, int X) { // 查找以X节点为根的树的高度
if (T == NULL) return;
if (T->data == X) {
printf("以%d为根的树的高度为:%d\n", X, getHeight(T));
return;
}
find(T->lchild, X);
find(T->rchild, X);
}
```
这里我们定义了一个`BiTree`结构体,其中包含了节点的数据和左右子树的指针。`getHeight`函数用于计算树的高度,采用递归实现,每次递归返回子树的高度,并加上1。`find`函数则是遍历整棵树,找到节点值等于X的节点,然后调用`getHeight`函数计算以该节点为根的子树的高度。
需要注意的是,该代码实现假定每个节点的数据都是唯一的,如果存在相同的节点数据,可能会有错误的计算结果。
阅读全文