zoukankan      html  css  js  c++  java
  • 检查平衡性

    实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。


    示例 1:
    给定二叉树 [3,9,20,null,null,15,7]
    3
    /
    9 20
    /
    15 7
    返回 true 。
    示例 2:
    给定二叉树 [1,2,2,3,3,null,null,4,4]
    1
    /
    2 2
    /
    3 3
    /
    4 4
    返回 false 。

    code:

    变向求二叉树高度的问题。
    用每个结点的高度信息反馈以该结点为根节点的树是否平衡,若高度为-1则代表不平衡;否则返回以该结点为根节点的树的高度,供其父节点判断。

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    private:
        int isBalancedCore(TreeNode* root)
        {
            if(root==nullptr)
                return 0;
            else if(root->left==nullptr&&root->right==nullptr)
                return 1;
    
            int leftHeight=isBalancedCore(root->left);
            int rightHeight=isBalancedCore(root->right);
            if(leftHeight==-1||rightHeight==-1)
                return -1;
            if(abs(leftHeight-rightHeight)>1)
                return -1;
            return max(leftHeight,rightHeight)+1;
        }
    public:
        bool isBalanced(TreeNode* root) {
            return isBalancedCore(root)!=-1;
        }
    };
  • 相关阅读:
    PHP迭代生成器---yield
    array_chunk — 将一个数组分割成多个
    php array_change_key_case
    PHP trait介绍
    mysql视图
    mysql常见内置函数
    MySQL表复制
    二分查找算法(折半查找算法)
    使用SplFixedArray创建固定大小的数组
    Frameset Example
  • 原文地址:https://www.cnblogs.com/tianzeng/p/12848475.html
Copyright © 2011-2022 走看看