Высота бинарного дерева[C++]
В общем, нужно найти высоту идеально сбалансированного бинарного дерева(не дерева поиска).
Количество элементов ввожу с клавы.
Вот код программы, если что.
#include <iostream>
#include<windows.h>
using namespace std;
struct point
{
int data;//информационное поле
point *left;//адрес левого поддерева
point *right;//адрес правого поддерева
};
point* Tree(int n, point *p)
{
point *r;
int nl,nr;
if(n==0){p=NULL;return p;}
nl=n/2;
nr=n-nl-1;
r=new point;
cout<<"элемент:";
cin>>r->data;
r->left=Tree(nr, r->left);
r->right=Tree(nl, r->right);
p=r;
return p;
}
void Print(point*p, int l)
{
if(p)
{
Print(p->left,l+5);
for(int i=0;i<l;i++)
cout<<" ";
cout<<p->data<<"\n";
Print(p->right,l+5);
}
}
void main()
{
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
int n,i=0;
cout<<"Задайте количество элементов дерева\n";
cin>>n;
point *root;
root=new point;
root=Tree(n, root);
Print(root,1);
}
помнится это log2(n+1)...