String 前往下载 = " http://icourse8.com/new_react_redux.html ";
详细信息
第1章 学习攻略【课程提供700+问题与答案库】
第2章 【赠送内容】React Native基础理论知识加油站【选看】
第3章 【先打一仗,巩固技能】需求分析、模块设计、APP导航框架搭建
第4章 基于Redux的项目框架搭建【适用于拔高:成神之路,助你一臂之力】
第5章 【实战必备技能】网络编程与数据存储技术
第6章 【你期待的实战来了,干货满满】最热模块开发
第7章 趋势模块开发【适用于企业级应用开发:简洁、高效、实用】
第8章 收藏模块开发【适用于企业级应用开发:简洁、高效、实用】
第9章 我的模块开发【一点小心思,适合装逼】
第10章 【张扬个性:炫酷又把妹】定制化功能与主题模块开发
第11章 搜索模块开发【适用于工作,思考与提升】
第12章 【升职加薪必备筹码:迎娶白富美,更进一步】数据统计与分享、第三方登录功能实现
第13章 全面屏适配与兼容问题【适用于面试:满腹干货不慌张】
第14章 打包发布与CodePush更新【适用于面试:满腹干货不慌张】
第15章 React Native混合开发【高能预警,解锁最流行的开发方式,难度指数5星】
第16章 React Native升级与适配指南【适用于工作:开发避雷针】
第17章 课程总结【万金油,出师必备锦囊】
第18章 赠送:《Flutter从入门到进阶-实战携程网App》体验课-入门篇
class Solution { //这个ReturnNode是参考我描述的递归套路的第二步:思考返回值是什么 //一棵树是BST等价于它的左、右俩子树都是BST且俩子树高度差不超过1 //因此我认为返回值应该包含当前树是否是BST和当前树的高度这两个信息 private class ReturnNode{ boolean isB; int depth; public ReturnNode(int depth, boolean isB){ this.isB = isB; this.depth = depth; } } //主函数 public boolean isBalanced(TreeNode root) { return isBST(root).isB; } //参考递归套路的第三部:描述单次执行过程是什么样的 //这里的单次执行过程具体如下: //是否终止?->没终止的话,判断是否满足不平衡的三个条件->返回值 public ReturnNode isBST(TreeNode root){ if(root == null){ return new ReturnNode(0, true); } //不平衡的情况有3种:左树不平衡、右树不平衡、左树和右树差的绝对值大于1 ReturnNode left = isBST(root.left); ReturnNode right = isBST(root.right); if(left.isB == false || right.isB == false){ return new ReturnNode(0, false); } if(Math.abs(left.depth - right.depth) > 1){ return new ReturnNode(0, false); } //不满足上面3种情况,说明平衡了,树的深度为左右俩子树最大深度+1 return new ReturnNode(Math.max(left.depth, right.depth) + 1, true); } }