LeetCode(剑指 Offer)- 55 - II. 平衡二叉树

简介: LeetCode(剑指 Offer)- 55 - II. 平衡二叉树

题目链接:点击打开链接

题目大意:

解题思路:

相关企业

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

AC 代码

  • Java
/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/// 解决方案(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(int x) : val(x), left(NULL), right(NULL) {}* };*/// 解决方案(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;
    }
};
目录
相关文章
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
62 6
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 26. 树的子结构
这篇文章提供了解决LeetCode上"剑指Offer 26. 树的子结构"问题的Python代码实现和解析,判断一棵树B是否是另一棵树A的子结构。
55 4
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 49. 丑数
解决剑指 Offer 49题"丑数"的Python实现,通过动态规划的方法计算出第n个丑数。
46 2
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 04. 二维数组中的查找
剑指Offer题目 "二维数组中的查找" 的Python解决方案,包括非递归迭代、递归以及使用内置函数的二分查找方法,以判断一个有序的二维数组中是否含有给定整数。
39 1
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 03. 数组中重复的数字
解决剑指Offer题目 "数组中重复的数字" 的Python实现方法,通过使用字典来记录数组中每个数字的出现次数,快速找出重复的数字。
41 1
|
4月前
|
iOS开发 MacOS
【Mac系统】解决Vscode中LeetCode插件不能刷剑指offer题库
文章讨论了解决Mac系统中Vscode里LeetCode插件无法刷剑指Offer题库的问题,并提供了一些相关的使用技巧和资源链接。
256 1
|
2月前
【LeetCode 33】110.平衡二叉树
【LeetCode 33】110.平衡二叉树
16 1
|
4月前
|
算法 Java 关系型数据库
leetcode110-平衡二叉树
文章通过LeetCode第110题"平衡二叉树"的解题过程,深入讲解了平衡二叉树的定义、树的高度概念,并提供了使用后序遍历算法判断二叉树是否平衡的Java代码实现,强调了理解理论知识和实践编码的重要性。
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 22. 链表中倒数第k个节点
Leetcode题目"剑指 Offer 22. 链表中倒数第k个节点"的Python解决方案,使用双指针法找到并返回链表中倒数第k个节点。
54 5
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 30. 包含min函数的栈
本文提供了实现一个包含min函数的栈的Python代码,确保min、push和pop操作的时间复杂度为O(1)。
32 4