千家信息网

C++如何实现平衡二叉树

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"C++如何实现平衡二叉树"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!平衡二叉树Gi
千家信息网最后更新 2026年11月03日C++如何实现平衡二叉树

本篇内容介绍了"C++如何实现平衡二叉树"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

平衡二叉树

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 everynode never differ by more than 1.

Example 1:

Given the following tree [3,9,20,null,null,15,7]:

3
/
9 20
/
15 7

Return true.

Example 2:

Given the following tree [1,2,2,3,3,null,null,4,4]:

1
/
2 2
/
3 3
/
4 4

Return false.

求二叉树是否平衡,根据题目中的定义,高度平衡二叉树是每一个结点的两个子树的深度差不能超过1,那么我们肯定需要一个求各个点深度的函数,然后对每个节点的两个子树来比较深度差,时间复杂度为O(NlgN),代码如下:

解法一:

class Solution {public:    bool isBalanced(TreeNode *root) {        if (!root) return true;        if (abs(getDepth(root->left) - getDepth(root->right)) > 1) return false;        return isBalanced(root->left) && isBalanced(root->right);        }    int getDepth(TreeNode *root) {        if (!root) return 0;        return 1 + max(getDepth(root->left), getDepth(root->right));    }};

上面那个方法正确但不是很高效,因为每一个点都会被上面的点计算深度时访问一次,我们可以进行优化。方法是如果我们发现子树不平衡,则不计算具体的深度,而是直接返回-1。那么优化后的方法为:对于每一个节点,我们通过checkDepth方法递归获得左右子树的深度,如果子树是平衡的,则返回真实的深度,若不平衡,直接返回-1,此方法时间复杂度O(N),空间复杂度O(H),参见代码如下:

解法二:

class Solution {public:        bool isBalanced(TreeNode *root) {        if (checkDepth(root) == -1) return false;        else return true;    }    int checkDepth(TreeNode *root) {        if (!root) return 0;        int left = checkDepth(root->left);        if (left == -1) return -1;        int right = checkDepth(root->right);        if (right == -1) return -1;        int diff = abs(left - right);        if (diff > 1) return -1;        else return 1 + max(left, right);    }};

"C++如何实现平衡二叉树"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

深度 子树 方法 复杂 复杂度 C++ 两个 代码 内容 时间 更多 知识 节点 解法 实用 学有所成 接下来 函数 困境 实际 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技和互联网公司 新华互联网科技学院 互联网科技革命 广州宏创互联网科技 天下捷融互联网科技 互联网科技素材视频竖屏 互联网巨头投资的硬核科技 互联网 科技馆 老年人脱离互联网科技的作文 金融科技与互联网金融相同和不同 语蝶互联网科技有限公司 湖南一路畅行互联网科技 注册互联网科技公司经营范围大全 国大互联网教育科技有限公司工作 广州互联网高科技取餐柜 众联互联网络科技 三亚科技创新互联网基地 科技发展第三阶段互联网时代 互联网 科技节活动 微视频大赛 小牛互联网科技有限公司地址 美国互联网科技巨头监管 互联网金融 金融科技 金融科技与互联网金融相同和不同 智腾互联网科技有限公司 上海京穆互联网科技有限公司 启辰互联网科技 美国互联网科技公司 互联网科技包装股 九思连强互联网电子科技有限公司 网互联网络科技
0