二叉樹平衡檢查(遞歸)

題目描述

實現一個函數,檢查二叉樹是否平衡,平衡的定義如下,對於樹中的任意一個結點,其兩顆子樹的高度差不超過1。

給定指向樹根結點的指針TreeNode* root,請返回一個bool,代表這棵樹是否平衡。

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};*/
int depthTree(TreeNode* root)
{
	if (root==NULL)
	{
		return -1;
	}
	else
	{
		int left=depthTree(root->left)+1;
		int right=depthTree(root->right)+1;
		return left>right?left:right;
	}
}

class Balance {
public:
	bool isBalance(TreeNode* root) {
		if (root==NULL)
		{
			return -1;
		}
		int depth_left=depthTree(root->left);
		int depth_right=depthTree(root->right);
		int diff=depth_left-depth_right;
		if (diff>1||diff<-1)
			return false;
		return isBalance(root->left)&&isBalance(root->right);
	}
};


發佈了41 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章