【LeetCode110】平衡二叉树

谁说胖子不能爱 提交于 2020-02-22 12:21:28

一.题目:平衡二叉树

二.算法思想

  利用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;
    }
};

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!