1. 程式人生 > >leetcode 110.平衡二叉樹

leetcode 110.平衡二叉樹

在這裡插入圖片描述 在第104題中,maxdepth函式實際上遍歷了二叉樹中每個節點的左右子樹的高度,對其稍加修改,當檢查到兩子樹高度差大於1時返回一個特定異常值即可。

bool isBalanced(TreeNode *root)
	{
		if (root == nullptr)
		{
			return true;
		}
		int a = maxDepth_extern(root);
		if (a == -1)
		{
			return false;
		}
		return true;
	}
int maxDepth_extern(TreeNode *root)
	{
		if (root == nullptr)
		{
			return 0;
		}
		int left_depth = 1 + maxDepth_extern(root->left);
		int right_depth = 1 + maxDepth_extern(root->right);
		if (left_depth == 0 || right_depth == 0)
		{
			return -1;
		}
		if (abs(right_depth - left_depth) >= 2)
		{
			return -1;
		}
		return left_depth >= right_depth ? left_depth : right_depth;
	}