刷题笔记(21)--平衡二叉树
Posted HardyDragon_CC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题笔记(21)--平衡二叉树相关的知识,希望对你有一定的参考价值。
技巧:递归返回值可以表示两种状态。
class Solution {
// 递归辅助函数,其返回值有两种,如果树平衡返回的是树的深度(左右子树取最大值);如果不平衡,返回 -1;
private int depthTree(TreeNode root){
if(root == null) return 0;
int ld = depthTree(root.left);
int rd = depthTree(root.right);
// 左右子树高度差大于1不平衡,且遇到子树不平衡,整个树也不平衡。
if(ld == -1 || rd == -1 || Math.abs(ld - rd) > 1){
return -1;
}
// 返回数的深度 左右子树取最大值,再加上其本身
return Math.max(ld,rd) + 1;
}
public boolean isBalanced(TreeNode root) {
return depthTree(root) == -1 ? false : true;
}
}
补充:递归计算二叉树高度
// 递归函数返回树的深度
private int depthTree(TreeNode root){
return root == null ? 0 : Math.max(depthTree(root.left) , depthTree(root.right)) + 1;
}
以上是关于刷题笔记(21)--平衡二叉树的主要内容,如果未能解决你的问题,请参考以下文章