#include <bits/stdc++.h>
using namespace std;
typedef struct BiTNode
{
int data;
BiTNode *left;
BiTNode *right;
}BiTNode,*BiTree;
BiTree CreateNode(int key)
{
BiTNode *temp = new BiTNode;
temp->data=key;
temp->left=temp->right=NULL;
return temp;
}
BiTree CreateBST()
{
BiTree root = CreateNode(5);
root->left = CreateNode(4);
root->right = CreateNode(6);
root->left->left = CreateNode(3);
root->left->left->left = CreateNode(1);
root->right->right = CreateNode(7);
return root;
}
BiTree CreateBBT()
{
BiTree root = CreateNode(10);
root->left = CreateNode(8);
root->right = CreateNode(12);
root->left->left = CreateNode(3);
root->left->right = CreateNode(9);
root->left->left->left = CreateNode(1);
root->right->left = CreateNode(11);
root->right->right = CreateNode(13);
}
#include <bits/stdc++.h>
#include "Create BiTree.h"
using namespace std;
bool balance=true;
int Height(BiTree root)
{
if(root==NULL) return 0;
int l,r;
l=Height(root->left);
r=Height(root->right);
if(abs(l-r)>1) balance=false;
return max(l,r)+1;
}
bool JudgeBBT(BiTree root)
{
if(root==NULL) return true;
Height(root);
return balance;
}
int main()
{
BiTree root1=CreateBST();
BiTree root2 = CreateBBT();
cout<<JudgeBBT(root1);
balance=true;
cout<<JudgeBBT(root2);
system("pause");
return 0;
}