我们可以利用递归来求一个二叉排序树的高度
int tree_hight(Node *node)
{
if (node != NULL) {
int left_h = tree_hight(node->left); //递归求左树的高度
int right_h = tree_hight(node->right); //递归求右树的高度
int max = left_h;
if (left_h < right_h) {
max = right_h;
}
return max + 1;
}
}
还可以使用递归来求树中最大的元素
int tree_maxnum(Node *node)
{
if (node != NULL) {
int m1 = tree_maxnum(node->left); //递归求左树的最大值
int m2 = tree_maxnum(node->right); //递归求右树的最大值
int m3 = node->data; //根节点的值
int max = m1;
if (max < m2) {
max = m2;
}
if (max < m3) {
max = m3;
}
return max;
}
}
查找这个树中是否有我们想要的值。
static int i = 0;
void sreach_tree(Node *node, int key)
{
++i;
if (node) {
if (key == node->data) {
printf("have this data , is %d\n"