[LeetCode] 110. Balanced Binary Tree, sizebalancedtree
[Question]
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.
[Analysis]
None
[Code]
/********************************** Date: * Author: SJF0115 * Subject: 110. balanced Binary Tree * Source: https://oj.leetcode.com/problems/balanced-binary-tree/* result: AC * Source: LeetCode * conclusion: * *********************************/# include <iostream> # include <algorithm> using namespace std; struct TreeNode {int val; TreeNode * left; TreeNode * right; TreeNode (int x): val (x), left (NULL), right (NULL ){}}; class Solution {public: bool isBalanced (TreeNode * root) {if (balancedHeight (root) =-1) {return false;} else {return true ;} // if} private: // if it is a balanced binary tree, return the height of the binary tree. // otherwise, return-1 int balancedHeight (TreeNode * node) {if (node = NULL) {return 0;} // if // The height of the left subtree int left = balancedHeight (node-> left ); // right subtree height int right = balancedHeight (node-> right); // The left/right subtree height difference cannot exceed 1 if (abs (left-right)> 1 | left <0 | right <0) {//-1 indicates that return-1 is not meeting the requirements of the balanced binary tree;} // if return max (left, right) + 1 ;}}; // create a binary tree int CreateBTree (TreeNode * & T) {int data in sequence; // enter the value of the node in the binary tree in sequence, -1 indicates the empty tree cin> data; if (data =-1) {T = NULL;} else {T = new TreeNode (data ); // construct the left subtree CreateBTree (T-> left); // construct the right subtree CreateBTree (T-> right);} return 0;} int main () {Solution solution; treeNode * root (0); CreateBTree (root); cout <solution. isBalanced (root );}
[Complexity]
Time complexity O (n), space complexity O (logn)