zoukankan      html  css  js  c++  java
  • leetcode 110

    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)如果二叉树为空,返回真
    (2)如果二叉树不为空,如果左子树和右子树都是AVL树并且左子树和右子树高度相差不大于1,返回真,其他返回假

    代码如下:

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     bool isBalanced(TreeNode* root) {
    13         int height;
    14         return isAvl(root, height);
    15     }
    16     bool isAvl(TreeNode* pRoot, int & height)
    17     {
    18         if(pRoot == NULL)
    19         {
    20             height = 0;
    21             return true;
    22         }
    23         int heightLeft;
    24         bool resultLeft = isAvl(pRoot->left, heightLeft);
    25         int heightRight;
    26         bool resultRight = isAvl(pRoot->right, heightRight);
    27         if(resultLeft && resultRight && abs(heightLeft - heightRight) <= 1)
    28         {
    29             height = max(heightLeft, heightRight) + 1;
    30             return true;
    31         }
    32         else
    33         {
    34             height = max(heightLeft, heightRight) + 1;
    35             return false;
    36         }
    37     }
    38 };
  • 相关阅读:
    mongodb教程
    redis高级知识
    memcached删除机制与大数据缓存问题
    nginx 运维基础
    mysql 集群与分区
    Memcached之缓存雪崩,缓存穿透,缓存预热,缓存算法
    git cz配置
    Angular零碎知识点-持续补充
    Vue学习笔记-组件
    Vue学习笔记-自定义指令生命周期函数
  • 原文地址:https://www.cnblogs.com/shellfishsplace/p/5869723.html
Copyright © 2011-2022 走看看