1. 程式人生 > >[劍指offer] 平衡二叉樹

[劍指offer] 平衡二叉樹

本文首發於我的個人部落格:尾尾部落

題目描述

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

解題思路

定義:平衡二叉查詢樹,簡稱平衡二叉樹。

  1. 可以是空樹。
  2. 假如不是空樹,任何一個結點的左子樹與右子樹都是平衡二叉樹,並且高度之差的絕對值不超過1。

遍歷每個結點,藉助一個獲取樹深度的遞迴函式,根據該結點的左右子樹高度差判斷是否平衡,然後遞迴地對左右子樹進行判斷。

參考程式碼

public class Solution {
    public boolean IsBalanced_Solution(TreeNode root) {
        if(root == null
) return true; return Math.abs(maxDept(root.left) - maxDept(root.right)) <=1 && IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right); } public int maxDept(TreeNode root){ if(root == null) return 0; return
1 + Math.max(maxDept(root.left), maxDept(root.right)); } }