本文共 788 字,大约阅读时间需要 2 分钟。
问题:
Given a binary tree, determine if it is height-balanced.
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.
解答:可以根据定义 采用递归的方式解答,但是递归次数太多容易超时,问题的关键在于如果快速的得到树的深度,而不是每次都遍历,这里采用的一个方法是同过isbalancde函数每次同时返回一个树的深度。
参考:h
代码:
*/class Solution {public: bool isBalanced(TreeNode *root) { int deep = 0; return isBalanced(root, &deep); } bool isBalanced(TreeNode *root, int *deep) { if(root == NULL) { *deep = 0; return true; } int left, right; if(isBalanced(root->left, &left) && isBalanced(root->right, &right)) { int diff = left - right; if(diff <= 1 && diff >= -1) { *deep = 1 + (left > right? left:right); return true; } } return false; }};
转载地址:http://mktsi.baihongyu.com/