Leetcode [110]-Balanced Binary Tree, leetcode-balanced
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.
Determine whether a tree belongs to a balanced binary tree
Determine the depth difference between the left and right nodes of the master node. If it is not in [-], false is returned. Otherwise, determine whether the Left and Right nodes belong to a balanced binary tree;
If any of the following conditions is not met, false is returned.
Code (C ++ ):
/** * Definition for a binary tree node. * 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(root == NULL) return true; int ldepth = getDepth(root->left); int rdepth = getDepth(root->right); if(ldepth - rdepth > 1 || ldepth - rdepth < -1) return false; return isBalanced(root->left) && isBalanced(root->right); } //get node's depth int getDepth(TreeNode *root){ if(root==NULL) return 0; int ldepth=0,rdepth=0; ldepth = getDepth(root->left); rdepth = getDepth(root->right); return ldepth > rdepth ? ldepth+1:rdepth+1; }};