zoukankan      html  css  js  c++  java
  • Leetcode | 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. 

    树的高度取决于左右子树的高度的最大值。

     1 /**
     2  * Definition for binary tree
     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         return getLayer(root, 1) != -1;
    14     }
    15     
    16     int getLayer(TreeNode *root, int layer) {
    17         if (root == NULL) return layer;
    18         int l = getLayer(root->left, layer + 1);
    19         if (l == -1) return -1;
    20         int r = getLayer(root->right, layer + 1);
    21         if (r == -1) return -1;
    22         if (abs(l - r) > 1) return -1;
    23         return l > r ? l : r;
    24     }
    25 };

     3-rd try:

     1 class Solution {
     2 public:
     3     bool isBalanced(TreeNode *root) {
     4        int height = 0;
     5        return recurse(root, height);
     6     }
     7     
     8     bool recurse(TreeNode *root, int &height) {
     9         if (root == NULL) return true;
    10         int lheight = 0, rheight = 0;
    11         if (!recurse(root->left, lheight) || !recurse(root->right, rheight)) return false;
    12         height = 1 + (lheight > rheight ? lheight : rheight);
    13         return abs(lheight - rheight) <= 1;
    14     }
    15 };
  • 相关阅读:
    Python中常用的模块(sys模块)
    Python中常用的模块(OS模块)
    Python中常用的模块(time模块)
    Python中常用的模块(random模块)
    Python生成器详解
    Python装饰器详解
    python 两个list 求交集,并集,差集
    数据库中的视图索引
    数据库中的外键和主键理解
    mssql学习
  • 原文地址:https://www.cnblogs.com/linyx/p/3782606.html
Copyright © 2011-2022 走看看