
题目要求某节点的两个子节点的深度(最深深度)差是否超过1。
最开始没弄清题意,以为是求最深节点与最浅节点的差,后来仔细读题发现是求两个子节点,但为什么是对比两个子节点的最深深度,目前不是很清楚。
思路:令叶子节点的深度为1;然后一直递归至根节点。每到一个节点就对比左右子节点的最深深度,若深度差大于1,则返回-1表示已经有节点不满足,然后一直递归到根节点。
代码:
class Solution {
public:
int travel(TreeNode* node)
{
if(node==NULL)
return 0;
int l_level=travel(node->left);
int r_level=travel(node->right);
if(l_level==-1 || r_level==-1)
return -1;
if(abs(l_level-r_level)>1)
return -1;
return max(l_level,r_level)+1;
}
bool isBalanced(TreeNode* root) {
if(root==NULL)
return true;
if(travel(root)==-1)
return false;
return true;
}
};
本文探讨了如何通过递归算法确定二叉树是否平衡,即任一节点的两个子节点深度差不超过1。介绍了一种从叶子节点开始,向上递归计算每个节点子树深度的方法,并在过程中检查深度差。
395

被折叠的 条评论
为什么被折叠?



