• 20.leetcode110_balanced_binary_tree


    1.题目描述

    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

    2.题目分析

    弄懂所谓的平衡二叉树,真是废了不少力气。平衡二叉树就是指二叉树的同级节点对应的最长长度之间的差不超过1。根据这个思路推理的话,只需要(二叉树)自上向下遍历每一级的最长长度,如果长度差不超过1,遍历下一级;超过1,返回False。最后遍历结束的标志是空节点,如果为空节点,返回True。

     3.解题思路

     1 # Definition for a binary tree node.
     2 # class TreeNode(object):
     3 #     def __init__(self, x):
     4 #         self.val = x
     5 #         self.left = None
     6 #         self.right = None
     7 
     8 class Solution(object):
     9     def isBalanced(self, root):
    10         """
    11         :type root: TreeNode
    12         :rtype: bool
    13         """   
    14         def maxdep(node,depth): #返回节点最长长度
    15             if node==None:
    16                 return depth
    17             else:
    18                 depth+=1
    19                 return max(maxdep(node.left,depth),maxdep(node.right,depth))
    20             
    21         if root==None: #遍历结束的标志
    22             return True
    23         else:
    24             d1=maxdep(root.left,0) #返回左节点最长长度
    25             d2=maxdep(root.right,0) #返回右节点最长长度
    26             if abs(d1-d2)<=1: #长度差小于等于1
    27                 return self.isBalanced(root.left) and self.isBalanced(root.right) #判断下一级的左节点与右节点是否平衡
    28             else:
    29                 return False #不平衡,返回False

    4.解题感悟

    做题真是越来越不容易了,但希望自己依然坚持下去。我依然充满信心ヾ(◍°∇°◍)ノ゙

     
  • 相关阅读:
    zabbix笔记之计算型监控项详解
    zabbix笔记之磁盘IO介绍
    zabbix笔记之Graphtree配置
    zabbix笔记之告警时远程执行命令
    zabbix笔记之异常优化
    zabbix笔记之IPMI配置
    基本的sql 语句
    socket 套接字
    调用父类的三种方法
    实例属性和类属性
  • 原文地址:https://www.cnblogs.com/19991201xiao/p/8437173.html
Copyright © 2020-2023  润新知