2023年12月13日 星期三

[110] Balanced Binary Tree

如果兩邊的樹有高度相差超過1的就return false
嗯.....感覺不是很能馬上想到Orz 
先回去"感覺"了一下單純求最深的那題(104. Maximum Depth of Binary Tree)
然後就照著抄了一下XD 偷偷塞了一個 &ans 進去,一旦它途中有相差超過一,就直接return了,
(return 的高度不重要,反正它已經是false了!!!而且ans 已經偷偷藏在裡面了!)
那就降Orz

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int height(struct TreeNode* root, int h, bool *ans)
{
if (root == NULL)
return h;
int left = height(root->left, h+1, ans);
int right = height(root->right, h+1, ans);
if (abs(left-right)>1)
{
*ans = false;
return 0;
}

return (left> right)? left:right;
}

bool isBalanced(struct TreeNode* root) {
bool ret = true;
height(root, 1, &ret);
return ret;
}

沒有留言:

張貼留言