31 lines
874 B
Java
31 lines
874 B
Java
# 55.2 平衡二叉树
|
|
|
|
[NowCoder](https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId=13&tqId=11192&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking&from=cyc_github)
|
|
|
|
## 题目描述
|
|
|
|
平衡二叉树左右子树高度差不超过 1。
|
|
|
|
<div align="center"> <img src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/af1d1166-63af-47b6-9aa3-2bf2bd37bd03.jpg" width="250px"/> </div><br>
|
|
|
|
## 解题思路
|
|
|
|
```java
|
|
private boolean isBalanced = true;
|
|
|
|
public boolean IsBalanced_Solution(TreeNode root) {
|
|
height(root);
|
|
return isBalanced;
|
|
}
|
|
|
|
private int height(TreeNode root) {
|
|
if (root == null || !isBalanced)
|
|
return 0;
|
|
int left = height(root.left);
|
|
int right = height(root.right);
|
|
if (Math.abs(left - right) > 1)
|
|
isBalanced = false;
|
|
return 1 + Math.max(left, right);
|
|
}
|
|
```
|