zoukankan      html  css  js  c++  java
  • [LeetCode 110]

    问题

    给出一棵二叉树,判断它是否在高度上是平衡的。

    对于本问题,高度上平衡的二叉树定义为:每个节点的两棵子树的深度差永远不大于1的一棵二叉树。

    初始思路

    根据定义,思路应该比较直接:递归计算每个节点左右子树的深度,只要发现一次深度差大于1的情况,即可终止递归返回不平衡的结果。最终代码如下:

     1 class Solution
     2     {
     3     public:
     4         bool isBalanced(TreeNode *root)
     5         {
     6             if(!root)
     7             {
     8                 return true;
     9             }
    10             
    11             isBalanced_ = true;
    12             
    13             GetDepth(root);
    14             
    15             return isBalanced_;
    16         }
    17         
    18     private:
    19         int GetDepth(TreeNode* node)
    20         {
    21 //已经不平衡后不需要再继续了,返回的深度也没用了,随便返回一个0即可
    22             if(!isBalanced_)
    23             {
    24                 return 0;
    25             }
    26             
    27             if(!node->left && !node->right)
    28             {
    29                 return 1;
    30             }
    31             
    32 //当前节点贡献1的深度
    33             int left  = 1;
    34             int right = 1;
    35             
    36             if(node->left)
    37             {
    38                 left += GetDepth(node->left);
    39             }
    40             
    41             if(node->right)
    42             {
    43                 right += GetDepth(node->right);
    44             }
    45             
    46             if(left > right + 1 || right > left + 1)
    47             {
    48                 isBalanced_ = false;
    49                 
    50                 return 0;
    51             }
    52             
    53             return left > right ? left : right;
    54         }
    55         
    56         bool isBalanced_;
    57         
    58     };
    isBalanced
  • 相关阅读:
    asp.net web api KnownTypeAttribute
    nodejs 递归创建目录
    nodejs 复制、移动文件
    windows cmd命令行下创建文件和文件夹
    nodejs http静态服务器
    C# Socket TCP Server & Client & nodejs client
    gem 安装nokigiri
    nsis 固定到任务栏
    SpringBoot整合JPA
    Freemaker FTL指令常用标签及语法
  • 原文地址:https://www.cnblogs.com/shawnhue/p/leetcode_110.html
Copyright © 2011-2022 走看看