#include <iostream>
#include <cmath>
using namespace std;
struct node
{
int val;
struct node *left;
struct node *right;
node(int t)
{
val = t;
left = 0;
right = 0;
}
};
typedef struct node* link;
void insert_tree(link &h, int val)
{
if (0 == h)
{
h = new node(val);
return;
}
if (val < h->val) insert_tree(h->left, val);
else insert_tree(h->right, val);
}
bool is_blancedR(const link &h, int &depth)
{
if (0 == h)
{
depth = 0;
return true;
}
int left;
int right;
if( is_blancedR(h->left, left) && is_blancedR(h->right, right) )
{
depth = 1 + (left>right?left:right);
if(left-right<1 && right-left<1)
return true;
}
return false;
}
bool is_blanced2(const link &h)
{
int depth=0;
return is_blancedR(h,depth);
}
int main(int argc, char* argv[])
{
link h=0;
int a[10]={1,6,3,8,5,3,6,4};
for(int i=0;i<10;++i)
insert_tree(h,a[i]);
cout<<is_blanced2(h)<<endl;
return 0;
}
判断二叉树是否平衡
最新推荐文章于 2024-12-12 19:08:51 发布