[LeetCode][Java] Balanced Binary Tree

來源:互聯網
上載者:User

標籤:java   leetcode   演算法   

題目:

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.

題意:

給定一棵二叉樹,判定它是否為平衡二叉樹。

演算法分析:

  * 平衡二叉樹(Balanced Binary Tree)又被稱為AVL樹(有別於AVL演算法),
  * 且具有以下性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,
  * 並且左右兩個子樹都是一棵平衡二叉樹。

  * 下面的代碼就完全按照定義,首先得到節點左右子樹的高度(遞迴),然後判斷左右子樹是否為平衡二叉樹,

  *  利用遞迴完成整棵樹的判斷。完全滿足條件,就返回true.

AC代碼:

public class Solution {    //遞迴    public boolean isBalanced(TreeNode root)    {        if(root==null) return true;        int leftdepth;        int rightdepth;        leftdepth=maxDepth(root.left);        rightdepth=maxDepth(root.right);        if(Math.abs(leftdepth-rightdepth)<=1&&isBalanced(root.left)&&isBalanced(root.right)) return true;        else return false;    }    //又是遞迴 採用代碼《Maximum Depth of Binary Tree 》--https://leetcode.com/problems/maximum-depth-of-binary-tree/    public int maxDepth(TreeNode root)     {        if(root == null)        {              return 0;          }          int l = maxDepth(root.left);          int r = maxDepth(root.right);          return l > r? l + 1:r+ 1;     }}


[LeetCode][Java] Balanced Binary Tree

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.