zoukankan      html  css  js  c++  java
  • LeetCode 110: Balanced Binary Tree

    题目:

    Given a binary tree, determine if it is height-balanced.

    For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

    思路:

    要求判断一颗二叉树是否是平衡二叉树。

    解法一:

    1.求每个节点的深度。如果abs(左子树的深度-右子树的深度)<2,并且左右子树都是平衡的,那么该节点是平衡的

    2.遍历每个节点,都满足返回true,否则返回false。

    class Solution {
    public:
        bool isBalanced(TreeNode *root) {
            if(root){
                return isBalanced(root->left)&&isBalanced(root->right)&&abs(depth(root->left)-depth(root->right))<2;
            }else{
                return true;
            }
        }
        int depth(TreeNode *root){
            if(!root){
                return 0;
            }
            return max(depth(root->left),depth(root->right))+1;
        }
    };
    

    解法二:

    上面方法在求节点深度的时候,有重复计算,即求每个节点的深度都进行了一次到叶子节点的遍历,因此我们可以在每步将该节点的深度记录下来,即可避免该重复计算。

    class Solution {
    public:
        bool isBalanced(TreeNode *root) {
            int depth = 0;
            return isBalanced(root,depth);
        }
        bool isBalanced(TreeNode *root, int &depth){
            if(!root){
                depth = 0;
                return true;
            }
            int left;
            int right;
            bool isleft = isBalanced(root->left,left);
            bool isright = isBalanced(root->right,right);
            depth = max(left,right)+1;
            return isleft&&isright&&abs(left-right)<2;
        }
    };
    

      

  • 相关阅读:
    flask_admin+flask_login 整合,jieba分词+echarts数据分析可视化
    古诗词网爬虫实现
    Flask admin Flask login 整合模板
    API网关Kong
    Flask添加新命令
    MyBatis连接MySQL8配置
    golang锁
    golang goroutine
    golang管道
    golang结构体
  • 原文地址:https://www.cnblogs.com/xiamaogeng/p/4365873.html
Copyright © 2011-2022 走看看