zoukankan      html  css  js  c++  java
  • 93. 平衡二叉树

    93. 平衡二叉树 

     

    给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 

    样例

    给出二叉树 A={3,9,20,#,#,15,7}, B={3,#,20,15,7}

    A)  3            B)    3 
       /                   
      9  20                 20
        /                  / 
       15   7              15  7

    二叉树A是高度平衡的二叉树,但是B不是

     
    /**
     * Definition of TreeNode:
     * class TreeNode {
     * public:
     *     int val;
     *     TreeNode *left, *right;
     *     TreeNode(int val) {
     *         this->val = val;
     *         this->left = this->right = NULL;
     *     }
     * }
     */
    
    
    class Solution {
    public:
        /*
         * @param root: The root of binary tree.
         * @return: True if this Binary tree is Balanced, or false.
         */
         bool isBalanced(TreeNode *root) {
            // write your code here
            // write your code here
            return isSubTreeBalanced(root) != -1;
        }
    
        int isSubTreeBalanced(TreeNode *root) {
            if(root == NULL) {
                return 0;
            }
    
            int left = isSubTreeBalanced(root->left);
            int right = isSubTreeBalanced(root->right);
            
            if(left == -1 || right == -1 || abs(left - right) > 1) {
                return -1;
            }
            else {
                return (left > right ? left : right) + 1;
            }
        }
    };
    

      

  • 相关阅读:
    deleted
    deleted
    deleted
    deleted
    deleted
    deleted
    deleted
    CF #505 B Weakened Common Divisor(数论)题解
    HDU 6425 Rikka with Badminton(组合问题签到)题解
    ZOJ 2747 Paint the Wall(离散化+暴力)题解
  • 原文地址:https://www.cnblogs.com/kanekiken/p/8059289.html
Copyright © 2011-2022 走看看