#include<iostream>
using namespace std;
struct Node{
Node* left;
Node* right;
int data;
};
int isBalanceTree(Node* root,bool& flag){
if(root==NULL) return 0;
int leftLen=isBalanceTree(root->left,flag);
int rightLen=isBalanceTree(root->right,flag);
if(leftLen-rightLen>1||leftLen-rightLen<-1)
flag=false;
return max(leftLen,rightLen)+1;
}
int main(int argc,char **argv){
Node* nd[5];
for(int i=0;i<5;i++){
nd[i]=new Node();
nd[i]->data=i;
nd[i]->left=nd[i]->right=NULL;
}
nd[0]->left=nd[1];
nd[1]->left=nd[2];
nd[1]->right=nd[3];
bool flag=true;
cout<<flag<<endl;
isBalanceTree(nd[0],flag);
cout<<flag<<endl;
system("pause");
return 0;
}
判断二叉树是否为平衡树
最新推荐文章于 2021-08-03 22:50:56 发布