LeetCode(算法)- 110. 平衡二叉树

简介: LeetCode(算法)- 110. 平衡二叉树

题目链接:点击打开链接

题目大意:

解题思路:

相关企业

  • 字节跳动
  • Facebook
  • 谷歌(Google)
  • 苹果(Apple)
  • 亚马逊(Amazon)
  • 微软(Microsoft)
  • 美团
  • 猿辅导
  • SAP 思爱普
  • 阿里巴巴
  • 抖音

AC 代码

  • Java
/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/// 解决方案(1)classSolution {
booleanres=true;
publicbooleanisBalanced(TreeNoderoot) {
dfs(root);
returnres;
    }
intdfs(TreeNodenode) {
if (node==null) {
return0;
        }
intl=dfs(node.left) +1;
intr=dfs(node.right) +1;
if (Math.abs(l-r) >1) {
res=false;
        }
returnMath.max(l, r);
    }
}
// 解决方案(2)classSolution {
publicbooleanisBalanced(TreeNoderoot) {
returnrecur(root) !=-1;
    }
privateintrecur(TreeNoderoot) {
if (root==null) return0;
intleft=recur(root.left);
if(left==-1) return-1;
intright=recur(root.right);
if(right==-1) return-1;
returnMath.abs(left-right) <2?Math.max(left, right) +1 : -1;
    }
}
// 解决方案(3)classSolution {
publicbooleanisBalanced(TreeNoderoot) {
if (root==null) returntrue;
returnMath.abs(depth(root.left) -depth(root.right)) <=1&&isBalanced(root.left) &&isBalanced(root.right);
    }
privateintdepth(TreeNoderoot) {
if (root==null) return0;
returnMath.max(depth(root.left), depth(root.right)) +1;
    }
}
  • C++
/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/// 解决方案(1)classSolution {
public:
boolisBalanced(TreeNode*root) {
returnrecur(root) !=-1;
    }
private:
intrecur(TreeNode*root) {
if (root==nullptr) return0;
intleft=recur(root->left);
if(left==-1) return-1;
intright=recur(root->right);
if(right==-1) return-1;
returnabs(left-right) <2?max(left, right) +1 : -1;
    }
};
// 解决方案(2)classSolution {
public:
boolisBalanced(TreeNode*root) {
if (root==nullptr) returntrue;
returnabs(depth(root->left) -depth(root->right)) <=1&&isBalanced(root->left) &&isBalanced(root->right);
    }
private:
intdepth(TreeNode*root) {
if (root==nullptr) return0;
returnmax(depth(root->left), depth(root->right)) +1;
    }
};
目录
相关文章
|
2月前
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
43 0
|
1月前
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
|
2月前
|
存储 算法 数据管理
数据结构与算法学习二零:二叉排序树(BST)、平衡二叉树(AVL)
这篇文章通过需求分析、代码实现和测试验证,详细介绍了二叉排序树的创建、遍历和删除操作,以及二叉平衡树(AVL)的自平衡特性和单旋转操作,旨在提高树结构在数据管理中的效率和性能。
51 0
数据结构与算法学习二零:二叉排序树(BST)、平衡二叉树(AVL)
|
2月前
【LeetCode 33】110.平衡二叉树
【LeetCode 33】110.平衡二叉树
16 1
|
4月前
|
算法
测试工程师的技能升级:LeetCode算法挑战与职业成长
这篇文章通过作者亲身体验LeetCode算法题的过程,探讨了测试工程师学习算法的重要性,并强调了算法技能对于测试职业成长的必要性。
80 1
测试工程师的技能升级:LeetCode算法挑战与职业成长
|
4月前
|
算法 Java 关系型数据库
leetcode110-平衡二叉树
文章通过LeetCode第110题"平衡二叉树"的解题过程,深入讲解了平衡二叉树的定义、树的高度概念,并提供了使用后序遍历算法判断二叉树是否平衡的Java代码实现,强调了理解理论知识和实践编码的重要性。
|
4月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
57 6
|
4月前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
72 2
|
4月前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
54 1
|
4月前
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
64 1