• 剑指 Offer 55


    地址 https://leetcode-cn.com/problems/ping-heng-er-cha-shu-lcof/

    输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
    
    示例 1:
    给定二叉树 [3,9,20,null,null,15,7]
    
        3
       / 
      9  20
        /  
       15   7
    返回 true 。
    
    示例 2:
    给定二叉树 [1,2,2,3,3,null,null,4,4]
    
           1
          / 
         2   2
        / 
       3   3
      / 
     4   4
    返回 false 。
    
     
    
    限制:
    0 <= 树的结点个数 <= 10000
    注意:本题与主站 110 题相同:https://leetcode-cn.com/problems/balanced-binary-tree/

    解答

    树的遍历 参数中额外添加该节点的左子树和右子树的深度

    那么在遍历完回溯的过程中 就可以判断每个节点的左右子树的深度差

    如果任意节点的深度差不满足平衡条件  那么就将答案置为false   

    如图

           1
          / 
         2   2
        / 
       3   3
      / 
     4   4
    /**
     * 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 ans = true;
        int dfs(TreeNode* root,int deep){
            if(root==NULL) return deep;
            
            int l = dfs(root->left,deep+1);
            int r = dfs(root->right,deep+1);
            
            if(ans == false ) return -1;
            if( abs(l-r)> 1) { ans =false;  return -1;}
            
            return max(l,r);
        }
    
        bool isBalanced(TreeNode* root) {
            if(root==NULL) return true;
            int l = dfs(root->left,0);
            int r = dfs(root->right,0);
    
            if(ans == false ) return ans;
            if(abs(l-r) <= 1) return true;
    
            return false;
        }
    };
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    将IIS中网站日志批量导入到mysql【python】
    Python网站日志分析
    python 获取文件版本号和修改时间
    python将IIS日志导入到SQL
    python2.7 MySQLdb模块在win32下安装
    《python核心编程》课后题第二版第十五章463页
    python批量文件重命名
    python随机生成彩票号码
    python获取IP归属地
    百度收录批量查询【python版】
  • 原文地址:https://www.cnblogs.com/itdef/p/14457580.html
Copyright © 2020-2023  润新知