#include <stdio.h>
#include <cstdlib>
#include <iostream>
using namespace std;
struct Node
{
int data;
struct Node *left,*right;
} ;
int max(int x,int y)
{
if(x>y) return x;
return y;
}
int isbalance(Node *root,bool &flag)
{
if(root==NULL)
return 0;
// printf("%d- ",root->data);
int leftlen=isbalance(root->left,flag);
int rightlen=isbalance(root->right,flag);
if(leftlen-rightlen<-1 || leftlen-rightlen>1)
flag=0;
return max(leftlen,rightlen)+1;
}
int main()
{
Node *a[5];
for(int i=0;i<5;i++)
{
a[i]=new Node;
a[i]->data=i;
a[i]->left=NULL;
a[i]->right=NULL;
}
a[0]->left=a[1];
a[0]->right=a[2];
a[1]->left=a[3];
a[1]->right=a[4];
for( i=0;i<5;i++)
{
printf("%d ",a[i]->data);
}
// printf("*\n");
bool flag =1;
// printf("*****\n");
int x=isbalance(a[0],flag);
if(flag)
{
printf("yes\n");
}
else
{
printf("no\n");
}
// for(;;);
return 0;
}
平衡二叉树的判断
最新推荐文章于 2023-01-04 18:48:52 发布