点击查看代码
#include<iostream>
using namespace std;
struct Node {
int data;
Node *left, *right;
};
Node* newNode(int x)
{
Node* temp = new Node;
temp->data = x;
temp->left = temp->right = NULL;
return temp;
}
void insert(Node*& travptr, int data) {//Node*& travptr 表示 travptr 是一个引用,引用的是一个指向 Node 类型的指针
if (travptr == NULL)
{
travptr = newNode(data);
return;
}
(data > travptr->data) ? insert(travptr->right, data) : insert(travptr->left, data);
}
int findheight(Node* root) {
if (root == NULL) {//空树高度定义为-1,一个节点高度为0
return -1;
}
return (findheight(root->left) > findheight(root->right) ? findheight(root->left) : findheight(root->right)) + 1;
}//时间复杂度:O(n),每个节点都调用
int main()
{
Node* root = NULL;
insert(root, 1);
insert(root, 2);
insert(root, 3);
insert(root, 4);
insert(root, 5);
cout << findheight(root) << endl;
return 0;
}