博客
关于我
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/

    你可能感兴趣的文章
    python flask 请求code 400, message Bad request version
    查看>>
    Python UI自动化测试集成UnitTest
    查看>>
    Python UTC 日期时间对象的 ISO 格式不包括 Z(祖鲁语或零偏移)
    查看>>
    python valueerror object2_python遇到错误记录
    查看>>
    python vars的作用
    查看>>
    Python virtualenv
    查看>>
    python vue3实现大文件分段续传(断点续传)--带暂停和继续功能
    查看>>
    Python WebDriver如何打印整个页面源(html)
    查看>>
    Python WebSocket自动化测试:构建高效接口测试框架
    查看>>
    Python Web开发
    查看>>
    Redis 配置文件杂项。
    查看>>
    Python web自动化测试 —— 文件上传
    查看>>
    Python web自动化测试 —— 文件上传!
    查看>>
    Python Web自动化测试开发环境搭建(附安装包与虚拟机环境)
    查看>>
    python win32api键盘_Python win32api.keybd_event模拟键盘输入
    查看>>
    python Windows显示当前鼠标坐标
    查看>>
    python Workbook 表格宽度
    查看>>
    python | flanker,一个神奇的 Python 库!
    查看>>
    python | flower,一个强大的 Python 库!
    查看>>
    python | funcy,一个超强的 提供函数式编程工具 Python 库!
    查看>>