当前位置: 首页 > news >正文

Leetcode题目:Balanced Binary Tree

题目:

Given a binary tree, determine if it is height-balanced.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

题目解答:判断一棵给定的二叉树是不是平衡二叉树。平衡二叉树的条件有:

    它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

对于树的处理,一般都使用递归的方式。

代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isBalanced(TreeNode* root) {
        if(root == NULL)
            return true;
        if((root -> left == NULL ) && (root -> right == NULL))
            return true;
        int leftDepth = 0;
        int rightDepth = 0;
        return isSubBalance(root -> left,leftDepth) && isSubBalance(root -> right , rightDepth) && (abs(leftDepth - rightDepth) <= 1) ;
    }
   
    bool isSubBalance(TreeNode *root,int &depth)
    {
        if(root == NULL)
        {
            depth = 0;
            return true;
        }
        if((root -> left == NULL ) && (root -> right == NULL))
        {
            depth = 1;
            return true;
        }
        else
        {
            depth = 1;
            int leftDepth = 0;
            int rightDepth = 0;
            return isSubBalance(root -> left,leftDepth) && isSubBalance(root -> right , rightDepth) && (abs(leftDepth - rightDepth) <= 1) && (depth += max(leftDepth,rightDepth) ) ;
        }
    }
   
};

转载于:https://www.cnblogs.com/CodingGirl121/p/5425720.html

相关文章:

  • 我是如何设计 Upload 上传组件的
  • 团队项目第一阶段冲刺站立会议6(4月23日)
  • You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5 SP1
  • 云HBase Spark分析引擎对接云数据库POLARDB
  • Hive基本操作
  • IDEA之配置svn
  • iPhone6 Plus、iPhone6、iPhone5S和之前版本真实分辨率
  • 云计算读书笔记(四)
  • python调用百度AI提取图片文字
  • 利用新浪微博API的Search接口做微博锐推榜
  • java中的多线程你只要看这一篇就够了
  • 查看Linux版本信息
  • Android 插件化原理-好文收集(陆续中。。。)
  • C#6.0 十大常用特性
  • 无向图的最短路径算法JAVA实现
  • Google 是如何开发 Web 框架的
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • Android 控件背景颜色处理
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Java 内存分配及垃圾回收机制初探
  • Java知识点总结(JavaIO-打印流)
  • js继承的实现方法
  • Nodejs和JavaWeb协助开发
  • Quartz初级教程
  • redis学习笔记(三):列表、集合、有序集合
  • Sass Day-01
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 计算机在识别图像时“看到”了什么?
  • 漂亮刷新控件-iOS
  • 区块链将重新定义世界
  • 如何利用MongoDB打造TOP榜小程序
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (1)(1.13) SiK无线电高级配置(五)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (js)循环条件满足时终止循环
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二)PySpark3:SparkSQL编程
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (十)T检验-第一部分
  • (一)Dubbo快速入门、介绍、使用
  • (一)Neo4j下载安装以及初次使用
  • (转)Sql Server 保留几位小数的两种做法
  • (转)程序员疫苗:代码注入
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .Net Web窗口页属性
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .Net 应用中使用dot trace进行性能诊断
  • .net解析传过来的xml_DOM4J解析XML文件
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • /var/spool/postfix/maildrop 下有大量文件
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?