NC62 平衡二叉树
NC62 平衡二叉树
- 题目描述:
- 题目链接:
详细操作流程看下图
- 代码:
c++版本:
class Solution {
public:
int getHeight(TreeNode* root){
if(root == NULL) return 0;//如果节点为空高度为0
int lh = getHeight(root->left);//返回左子树高度
int rh = getHeight(root->right);//返回右子树高度
return max(lh,rh) + 1; //取左子树和右子树高度中最大的并且+1
}
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot == NULL) return true;//节点为空返回true
if(!IsBalanced_Solution(pRoot->left)) return false;//节点的左子树不是平衡二叉树返回false
if(!IsBalanced_Solution(pRoot->right)) return false;//节点的右子树不是平衡二叉树返回false
//左右都为平衡二叉树判断高度差
int lh = getHeight(pRoot->left);
int rh = getHeight(pRoot->right);
if(abs(lh - rh) > 1) return false;//如果左右子树高度差大于1就返回false
return true;
}
};
Java版本:
public class Solution {
pub
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
前端岗位面试真题宝典 文章被收录于专栏
本面试宝典均来自校招面试题目大数据进行的整理
字节跳动公司福利 1380人发布