LintCode 93. 平衡二叉樹
阿新 • • 發佈:2018-01-28
ini post 節點 str urn int 給定 nod init
題目:給定一個二叉樹,確定它是高度平衡的。對於這個問題,一棵高度平衡的二叉樹的定義是:一棵二叉樹中每個節點的兩個子樹的深度相差不會超過1。
樣例
給出二叉樹 A={3,9,20,#,#,15,7}
, B={3,#,20,15,7}
A) 3 B) 3 / \ 9 20 20 / \ / 15 7 15 7
二叉樹A是高度平衡的二叉樹,但是B不是
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * }*/ class Solution { public: /* * @param root: The root of binary tree. * @return: True if this Binary tree is Balanced, or false. */ bool isBalanced(TreeNode * root) { // write your code here return subTreeBalanced(root)!=-1; } int subTreeBalanced(TreeNode* node) {if(node==NULL) return 0; int left=subTreeBalanced(node->left); int right=subTreeBalanced(node->right); if(left==-1||right==-1||abs(left-right)>1) { return -1; }else { return max(left,right)+1; } } };
LintCode 93. 平衡二叉樹