zoukankan      html  css  js  c++  java
  • 41.平衡二叉树

    题目描述:

      输入一颗二叉树的根节点,判断该树是不是一颗二叉平衡树

    思路分析:

      解法1:求出根节点左右子树的高度,如果左右子树的高度差不大于1,那么继续判断它的左右子树是不是二叉平衡树,如果左右子树都是二叉平衡树,那么最终这棵树就是二叉平衡树。

      解法2:解法1中思路比较清晰简单,但是一个节点会被重复遍历多次,这种思路的时间效率不高。我们用后序遍历的方式,遍历二叉树的每个节点,那么在遍历到一个节点之前我们就已经遍历了它的左右子树,只要在遍历每个节点的时候记录它的深度,我们就可以一边遍历一边判断每个节点是不平衡的。

    代码:

    public class Solution {
        public boolean IsBalanced_Solution(TreeNode root) {
            if(root==null)
                return true;
            int left=depth(root.left);
            int right=depth(root.right);
            if(Math.abs(left-right)>1)
                return false;
            return IsBalanced_Solution(root.left)&&IsBalanced_Solution(root.right);
        }
        public int depth(TreeNode root){
            if(root==null)
                return 0;
            int left=depth(root.left);
            int right=depth(root.right);
            return Math.max(left,right)+1;
        }
    }
    
    public class Solution {
        boolean res=true;
        public boolean IsBalanced_Solution(TreeNode root) {
            if(root==null)
                return res;
            depth(root);
            return res;
        }
        public int depth(TreeNode root){
            if(root==null)
                return 0;
            int left=depth(root.left);
            int right=depth(root.right);
            if(Math.abs(left-right)>1)
                res=false;
            return Math.max(left,right)+1;
        }
    }
    

  • 相关阅读:
    浅谈缓存管理
    [Architecture Pattern] Database Migration (上)
    knockout.js的学习笔记4
    cenOS5.5安装oracle10g(傻瓜篇)
    SportsStore:管理 — 精通ASP.NET MVC 3
    ASP.NET MVC下的异步Action的定义和执行原理
    基于EF 4.3.1 Code First的领域驱动设计实践案例
    asp.net缓存
    《Pro ASP.NET MVC 3 Framework》部署
    Asp.Net MVC 3.0【Hello World!】
  • 原文地址:https://www.cnblogs.com/yjxyy/p/10932559.html
Copyright © 2011-2022 走看看