【题目】
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.
【题意】
判断二叉树是否是平衡二叉树
【思路】
平衡二叉树要求任意一个节点的左右子树高度差的绝对值不大于1.
按照定义,递归求解即可。
【代码】
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int getHeight(TreeNode *root){ if(root==NULL)return 0; //获得左子树高度 int leftHeight=getHeight(root->left); if(leftHeight==-1)return -1; //获得右子树高度 int rightHeight=getHeight(root->right); if(rightHeight==-1)return -1; //判断左右子树高度差是否符合要求, 如果符合要求,则返回当前二叉树的高,如果不符合要求,则返回-1 if(abs(leftHeight-rightHeight)<=1) return max(leftHeight, rightHeight)+1; return -1; } bool isBalanced(TreeNode *root) { if(root==NULL)return true; int height=getHeight(root); if(height==-1)return false; return true; } };
LeetCode: Balanced Binary Tree [110]
时间: 2024-08-08 22:06:10