
(Java 剑指 offer)平衡二叉树
发布日期:2021-05-07 19:44:18
浏览次数:19
分类:精选文章
本文共 1647 字,大约阅读时间需要 5 分钟。
文章目录
一、题目
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
平衡二叉树,左右子树的高度差为 1,-1,0
二、题解
该题类似上篇写的 ,只需在每次计算得到左右子树的深度后,加一个判断左右子树的高度差操作即可。
public class Solution { //判断是否是二叉平衡树的标志 private boolean isBalanced=true; public boolean IsBalanced_Solution(TreeNode root) { TreeDepth(root); return isBalanced; } public int TreeDepth(TreeNode root) { //结点为空返回0 if (root == null) { return 0; } //分别递归计算左右子树的深度 int leftDepth = TreeDepth(root.left); int rightDepth = TreeDepth(root.right); //判断左右子树的差值的绝对值,大于1则不是二叉平衡树 if(Math.abs(leftDepth-rightDepth)>1){ isBalanced=false; } //左右子树较大者加一即为该树深度 return leftDepth > rightDepth ? (leftDepth + 1) : (rightDepth + 1); }}
对于无论哪一步得到高度差不满足,还是要走完整个平衡二叉树,暂时不知道怎么解决
代码优化版,不设置全局变量:
public class Solution { public boolean IsBalanced_Solution(TreeNode root) { return getTreeLength(root) !=-1; } public int getTreeLength(TreeNode root){ if(root==null){ return 0; } int l = getTreeLength(root.left); int r = getTreeLength(root.right); if(l==-1 || r==-1 || Math.abs(l-r)>1){ return -1; } return Math.max(l,r)+1; }}
三、总结
(1)求解二叉树的深度
public int getTreeLength(TreeNode root){ if(root==null){ return 0; } int l = getTreeLength(root.left); int r = getTreeLength(root.right); if(l==-1 || r==-1 || Math.abs(l-r)>1){ return -1; } return Math.max(l,r)+1; }
(2)数学相关方法
//绝对值Math.abs(l-r)//最大值Math.max(l,r)
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月06日 02时06分41秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
“/”应用程序中的服务器错误。
2021-05-08
weblogic之cve-2015-4852
2021-05-08
Java注释
2021-05-08
水调歌头·1024
2021-05-08
C++ 函数重载
2021-05-08
Nginx的Gzip功能
2021-05-08
Azure Storage 系列(四)在.Net 上使用Table Storage
2021-05-08
abstract关键字的使用
2021-05-08
.NET微信网页开发之使用微信JS-SDK调用微信扫一扫功能
2021-05-08
解决Spirng注入时名称下的红色波浪线
2021-05-08
使用mybatis-generator生成底层
2021-05-08
Android APK 重签名
2021-05-08
Mybatis【3】-- Mybatis使用工具类读取配置文件以及从属性读取DB信息
2021-05-08
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
2021-05-08
Mybatis【7】-- Mybatis如何知道增删改是否成功执行?
2021-05-08
计算输入的一句英文语句中单词数
2021-05-08
lvs+keepalive构建高可用集群
2021-05-08
Mysql高可用架构(主从同步)
2021-05-08