本文共 582 字,大约阅读时间需要 1 分钟。
题目要求
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。思路
这个题的思路和判断二叉树的最大深度类似,我们需要求出左子树和右子树中最大的那个,在那个基础上加一,两个子数的深度差的绝对值小于2。图解
代码实现
int max(int x, int y){ return x > y ? x : y;}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) < 2 && isBalanced(root->left) && isBalanced(root->right);}
转载地址:http://vjno.baihongyu.com/