For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
檢查這個一顆二元樹是不是高度平衡(這邊的定義為左右兩邊的子樹高度不可以相差大於1)
解法
看code就清楚了
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isBalanced(TreeNode* root) { return maxDepth(root) != -1; } int maxDepth(TreeNode* node) { if(!node) { return 0; } auto ldepth = maxDepth(node->left); auto rdepth = maxDepth(node->right); if(ldepth == -1 || rdepth == -1 || abs(ldepth - rdepth) > 1) { return -1; } return max(ldepth, rdepth) + 1; } };
沒有留言 :
張貼留言