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.
判断一棵二叉树是否是平衡的,只要递归判断左右子树的高度。如果左右子树不再平衡,那么改变条件变量,递归返回。
C++:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isBalanced(TreeNode *root) { height(root); return flag; } private: bool flag = true; int height(TreeNode* root) { if(!flag) return -1; if(!root) return 0; int l = height(root->left); int r = height(root->right); if(abs(l - r) > 1) flag = false; return (l>r?l:r) + 1; } };
Python:
# Definition for a binary tree node # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: # @param root, a tree node # @return a boolean def isBalanced(self, root): self.flag = True self.height(root) return self.flag def height(self,root): if not self.flag: return -1 if not root: return 0 l = self.height(root.left) r = self.height(root.right) if abs(l-r) > 1: self.flag = False return max(l,r)+1
【LeetCode】Balanced Binary Tree
原文地址:http://blog.csdn.net/jcjc918/article/details/44487393