每天一道剑指offer-平衡二叉树
- 2019 年 10 月 4 日
- 笔记
前言
今天的题目 每天的题目见github(看最新的日期): https://github.com/gzc426 具体的题目可以去牛客网对应专题去找。
题目
每天一道剑指offer-平衡二叉树
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId=13&tqId=11192&tPage=2&rp=2&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking
思路
- 从下往上遍历,如果子树是平衡二叉树,则返回子树的高度;如果发现子树不是平衡二叉树,则直接停止遍历,这样至多只对每个结点访问一次。
题目详解
public class Solution { private boolean flag = true; public boolean IsBalanced_Solution(TreeNode root) { TreeLength(root); return flag; } private int TreeLength(TreeNode root) { if(root == null) return 0; int left = TreeLength(root.left);//左子树的高度 int right = TreeLength(root.right);//右子树的高度 if(left-right >= 2 || right - left >= 2) {//左右子树高度差大于等于2,标记就不是true flag = false; } return left>right?(left+1):(right+1); } }