一.题目:平衡二叉树
二.算法思想
利用depth函数求解每个结点的二叉树高度,利用isBalanced函数:求解结点的左右子树的高度差是否≤1且递归遍历左右子树的结点是否平衡。
【缺点】耗内存
三.代码
/** * 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) return true; int plus=abs(depth(root->left)-depth(root->right));//当前结点的左右子树高度差 return (plus<=1)&&(isBalanced(root->left)&&(isBalanced(root->right))); } //求解二叉树的高度 int depth(TreeNode* node){ if(node==NULL) return 0; return max(depth(node->left),depth(node->right))+1; } };