• LeetCode110平衡二叉树


    题目链接

    https://leetcode-cn.com/problems/balanced-binary-tree/

    题解

    • 递归解法
    • 平衡二叉树定义:一个二叉树每个结点的左右两个子树的高度差的绝对值不超过1
    • 递归函数返回值:如果平衡则返回该树的高度,空树则返回0,不平衡(左右子树不平衡或该结点不平衡)则返回-1
    // Problem: LeetCode 110
    // URL: https://leetcode-cn.com/problems/balanced-binary-tree/description/
    // Tags: Tree DFS
    // Difficulty: Easy
    
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    struct TreeNode{
        TreeNode* left;
        TreeNode* right;
        int val;
        TreeNode(int x):val(x), left(nullptr), right(nullptr){}
    };
    
    class Solution{
    private:
        int recursion(TreeNode* root){//若该树平衡则返回其高度,不平衡则返回-1
            // 空树深度为0,也算平衡树
            if(root==nullptr)
                return 0;
    
            // 计算左子树和右子树深度
            int left=recursion(root->left);
            int right=recursion(root->right);
    
            // 若子树不平衡,则父树也不平衡(平衡二叉树定义:一个二叉树每个结点的左右两个子树的高度差的绝对值不超过1)
            if(left<0||right<0)
                return -1;
            
            // 左右子树平衡,则判断该树是否平衡
            if (abs(left-right)<=1)
                return max(left,right)+1;
            else
                return -1;
        }
    
    public:
        bool isBalanced(TreeNode* root){
            return recursion(root)>=0;
        }
    };
    

    作者:@臭咸鱼

    转载请注明出处:https://www.cnblogs.com/chouxianyu/

    欢迎讨论和交流!


  • 相关阅读:
    配置centOS下的Python
    linux基础命令2
    linux基础命令1
    linux常用命令(运维用到)
    Lab 10-2
    Lab 10-1
    Lab 9-3
    archlinux 装完系统连接 wifi 网络
    arch Linux(二)
    arch Linux 安装完,无法通过 SSH 远程连接 root 用户问题
  • 原文地址:https://www.cnblogs.com/chouxianyu/p/13375961.html
Copyright © 2020-2023  润新知