Balanced Binary Tree --判断平衡二叉树(重重)

来源:互联网 发布:淘宝买黄金可靠吗 编辑:程序博客网 时间:2024/05/18 05:59

问题:链接

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函数每次同时返回一个树的深度。

参考:http://zhedahht.blog.163.com/blog/static/25411174201142733927831/

代码:

 */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;    }};


0 0
原创粉丝点击