• 剑指offer-平衡二叉树-python


    题目描述

    输入一棵二叉树,判断该二叉树是否是平衡二叉树。

    思路:

    平衡二叉树

    (AVL)平衡二叉树是一种二叉排序树,其中每个结点的左子树和右子树的高度差至多等于1。它是一种高度平衡的二叉排序树。意思是说,要么它是一棵空树,要么它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。

    平衡二叉树是一种二叉排序树。也就是二叉排序树包含了平衡二叉排序树,其次它要满足后面的约束条件,就是每个结点的左子树和右子树的高度差不超过1

    所以递归遍历左右子树,比较左右子树的深度

    # -*- coding:utf-8 -*-
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    class Solution:
        def IsBalanced_Solution(self, pRoot):
            # write code here
            if not pRoot: return 1
            left = self.IsBalanced_Solution(pRoot.left)
            right = self.IsBalanced_Solution(pRoot.right)
            if not left:return False
            if not right:return False
            if abs(left-right)<2:
                return 1+max(left,right)
            else:
                return False
            
                
  • 相关阅读:
    JS条件判断小技巧
    简单实现节流函数和防抖函数(转载)
    一篇常做错的经典JS闭包面试题
    前端冷知识集结
    闭包
    仔细认识setInterval
    仔细认识setTimeout
    单方向指定时间内的匀速运动
    图片延迟加载
    优化网页上的gif
  • 原文地址:https://www.cnblogs.com/ansang/p/11947712.html
Copyright © 2020-2023  润新知