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
  • 相关阅读:
    HTTP客户端识别与Cookie机制
    javascript模式之模块模式
    js类式继承模式学习心得
    关于html自闭合标签要不要加空格和斜杠的问题?
    分享两件有趣的事情
    PS Web切图界面设置
    这是什么
    关于前后端分离我的理解
    模块化方案esl以及amd的依赖方式
    node 内存管理相关
  • 原文地址:https://www.cnblogs.com/shawnhue/p/leetcode_110.html
Copyright © 2011-2022 走看看