1. 程式人生 > 其它 >【劍指offer簡單部分11】平衡二叉樹(java)

【劍指offer簡單部分11】平衡二叉樹(java)

技術標籤:劍指offer二叉樹演算法資料結構java

題目描述

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。
在這裡,我們只需要考慮其平衡性,不需要考慮其是不是排序二叉樹
平衡二叉樹(Balanced Binary Tree),具有以下性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。
在這裡插入圖片描述

分析

判斷二叉樹是否為平衡二叉樹,並且子樹也都要判斷,這樣巢狀結構較容易想到遞迴。寫一個方法,並且內部不斷呼叫自己,遞迴跳出條件就是,高度差超過1,若都滿足則返回true。

public class Solution {
    boolean flag =
true; public boolean IsBalanced_Solution(TreeNode root) { getDepth(root); return flag; } public int getDepth(TreeNode root){ if(root==null) return 0; int left = getDepth(root.left); int right = getDepth(root.right); if(Math.abs(
left-right)>1) flag=false; return right>left? right+1 : left+1; } }

在這裡插入圖片描述