当前位置:网站首页>【剑指 Offer】55 - II. 平衡二叉树

【剑指 Offer】55 - II. 平衡二叉树

2022-07-01 13:26:00 LuZhouShiLi

剑指 Offer 55 - II. 平衡二叉树

题目

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。

思路

 首先定义一个计算节点高度的函数,然后根据二叉树的前序遍历,对于当前遍历的节点,首先计算左右子树的高度,如果左右子树的高度差是否不超过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:
    int height(TreeNode* root)
    {
    
            if(root == NULL)
        {
    
            return 0;
        }
        else
        {
    
            // 计算二叉树的高度
            return max(height(root->left),height(root->right)) + 1;
        }
    }

    bool isBalanced(TreeNode* root) 
    {
    
        if(root == NULL)
        {
    
            return true;
        }
        else
        {
    
            return abs(height(root->left) - height(root->right)) <= 1 && isBalanced(root->left) && isBalanced(root->right);
        }
    }
};

原网站

版权声明
本文为[LuZhouShiLi]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_44653420/article/details/125554126