package com.heu.wsq.leetcode.tree;
/**
* 剑指 Offer 55 - II. 平衡二叉树
* @author wsq
* @date 2020/12/22
* 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
*
* 示例 1:
* 给定二叉树 [3,9,20,null,null,15,7]
* 3
* / \
* 9 20
* / \
* 15 7
* 返回 true 。
*
* 链接:https://leetcode-cn.com/problems/ping-heng-er-cha-shu-lcof
*/
public class IsBalanced {
private boolean flag = true;
public boolean isBalanced(TreeNode root){
dfs(root);
return flag;
}
private int dfs(TreeNode node){
if (!flag){
return 0;
}
if (node == null){
return 0;
}
int leftDepth = dfs(node.left);
int rightDepth = dfs(node.right);
if (Math.abs(leftDepth - rightDepth) > 1){
flag = false;
}
return Math.max(leftDepth, rightDepth) + 1;
}
}
package com.heu.wsq.leetcode.tree;
/**
- 剑指 Offer 55 - II. 平衡二叉树
- @author wsq
- @date 2020/12/22
- 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
- 示例 1:
- 给定二叉树 [3,9,20,null,null,15,7]
-
3
- / \
- 9 20
-
/ \
- 15 7
- 返回 true 。
- 链接:https://leetcode-cn.com/problems/ping-heng-er-cha-shu-lcof
*/
public class IsBalanced {
private boolean flag = true;
public boolean isBalanced(TreeNode root){
dfs(root);
return flag;
}
private int dfs(TreeNode node){
if (!flag){
return 0;
}
if (node == null){
return 0;
}
int leftDepth = dfs(node.left);
int rightDepth = dfs(node.right);
if (Math.abs(leftDepth - rightDepth) > 1){
flag = false;
}
return Math.max(leftDepth, rightDepth) + 1;
}
}