bool IsBalancedTree(Tree* t,int* depth)
{
	if(t==NULL)
	{
		*depth=0;
		return true;
	}

	int left,right;
	if(IsBalancedTree(t->left,&left) && IsBalancedTree(t->right,&right))
	{
		int diff=left-right;
		if(diff<=1 || diff>=-1)
		{
			*depth=1+(left>right ? left: right);
			return true;
		}
	}

	return false;
}
Пример #2
0
bool IsBalancedTree(BtNode root)
{
	if(root == NULL)
	{
		return true;
	}
	
	if(abs(FindHeight(root->left) - FindHeight(root->right)) > 1)
	{
		return false;
	}

	else
	{
		if(IsBalancedTree(root->left) && IsBalancedTree(root->right))
		{
			return true;
		}
		else
		{
			return false;
		}
	}
}
Пример #3
0
int main(int argc, char* argv[])
{

	BtNode root  = NodeCreate(1);
	BtNode node2 = NodeCreate(2);
	BtNode node3 = NodeCreate(3);
	BtNode node4 = NodeCreate(4);
	BtNode node5 = NodeCreate(5);
	BtNode node6 = NodeCreate(6);
	BtNode node7 = NodeCreate(7);
	BtNode node8 = NodeCreate(8);
	BtNode node9 = NodeCreate(9);

	root->left   = node2;
	root->right  = node3;

	node2->left  = node4;
	node2->right = node5;

	node5->left = node7;
	node5->right = node8;

	node8->right = node9;

	node3->right = node6;

	if(IsBalancedTree(node5) == true)
	{
		printf("bal\n");
	}
	else
	{
		printf("nonbal\n");
	}

	return 0;
}