leetcode-判断平衡二叉树-34

题目要求
  给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

思路
  这个题的思路和判断二叉树的最大深度类似,我们需要求出左子树和右子树中最大的那个,在那个基础上加一,两个子数的深度差的绝对值小于2。

图解
在这里插入图片描述

代码实现

int max(int x, int y)
{
	return x > y ? x : y;
}

int maxDepth(struct TreeNode* root){
	if (root == NULL)
	{
		return 0;
	}

	return max(maxDepth(root->left), maxDepth(root->right)) + 1;
}

bool isBalanced(struct TreeNode* root){
	if (root == NULL)
	{
		return true;
	}

	int leftDepth = maxDepth(root->left);
	int rightDepth = maxDepth(root->right);

	return abs(leftDepth - rightDepth) < 2 && isBalanced(root->left) && isBalanced(root->right);
}

猜你喜欢

转载自blog.csdn.net/weixin_43580319/article/details/114846300
今日推荐