博客
关于我
leetcode-判断平衡二叉树-34
阅读量:276 次
发布时间:2019-03-01

本文共 1108 字,大约阅读时间需要 3 分钟。

给定一个二叉树,判断它是否是高度平衡的二叉树。高度平衡二叉树的定义是一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。

要解决这个问题,我们可以通过递归的方式来计算每个节点的左右子树的高度,并检查它们的高度差是否符合条件。

首先,我们需要一个辅助函数来计算二叉树的最大深度。这个函数递归地返回左子树和右子树的最大深度,然后返回较大的那个再加一。这样,我们就可以得到每个节点的深度。

然后,我们需要主函数来检查每个节点是否满足高度平衡的条件。对于每个节点,我们需要计算它的左子树和右子树的深度。如果它们的深度差的绝对值不超过1,并且左子树和右子树本身也都是高度平衡的,那么这个节点就满足条件。

我们可以通过递归的方式来实现这个检查。对于每个节点,首先检查它的左子树和右子树是否存在。如果不存在,返回true。否则,计算左右子树的深度,检查深度差是否符合条件,并且左右子树是否也都是高度平衡的。

通过这种方法,我们可以从根节点开始,逐层检查每个节点,确保整个二叉树的高度平衡。

代码实现

int maxDepth(struct TreeNode* root) {    if (root == NULL) {        return 0;    }    return max(maxDepth(root->left), maxDepth(root->right)) + 1;}bool isBalanced(struct TreeNode* root) {    if (root == NULL) {        return true;    }    int leftDepth = maxDepth(root->left);    int rightDepth = maxDepth(root->right);    return abs(leftDepth - rightDepth) <= 1 && isBalanced(root->left) && isBalanced(root->right);}

代码解释

  • maxDepth函数:这个函数递归地计算二叉树的最大深度。如果根节点不存在,返回0。否则,返回左子树和右子树深度的最大值加一。

  • isBalanced函数:这个函数递归地检查二叉树是否是高度平衡的。如果根节点不存在,返回true。否则,计算左子树和右子树的深度,检查它们的深度差是否不超过1,并且左右子树本身也都是高度平衡的。

  • 通过这种方法,我们可以有效地判断一个二叉树是否是高度平衡的。这个方法的时间复杂度是O(n),其中n是二叉树的节点数。空间复杂度是O(h),h是树的高度。

    转载地址:http://vjno.baihongyu.com/

    你可能感兴趣的文章
    PAT-乙级-1040 有几个PAT
    查看>>
    Spring组件扫描配置
    查看>>
    PAT1093 Count PAT's (25)(逻辑题)
    查看>>
    PATA1038题解(需复习)
    查看>>
    Patching Array
    查看>>
    Spring源码学习(二):Spring容器之prepareContext和BeanFactoryPostProcessor的介绍
    查看>>
    PatchMatchStereo可能会需要的Rectification
    查看>>
    Path does not chain with any of the trust anchors
    查看>>
    Path形状获取字符串型变量数据
    查看>>
    PAT甲级——1001 A+B Format (20分)
    查看>>
    Skywalking原理
    查看>>
    PAT甲级——1006 Sign In and Sign Out (25分)
    查看>>
    PAT甲级——1007 Maximum Subsequence Sum (25分)
    查看>>
    PAT甲级——1009 Product of Polynomials (25分)(最后一个测试点段错误)
    查看>>
    Spring对jdbc的支持
    查看>>
    vagrant 的安装
    查看>>
    PayPal网站付款标准版(for PHP)
    查看>>
    Paystack Android SDK 集成与使用指南
    查看>>
    pbf格式详解,javascript加载导出pbf文件示例
    查看>>
    PBOC2.0与3.0的区别
    查看>>