資料結構與演算法 如何判斷平衡二叉樹?

2021-09-29 10:37:49 字數 848 閱讀 9818

1.判斷是否是平衡二叉樹

public

class

isbalancedtree

}//封裝返回值型別

public

static

class

returndata

}public

static

boolean

isb(node head)

return

process

(head)

.isb;

}//具體的遞迴函式

public

static returndata process

(node head)

returndata leftdata =

process

(head.left)

;//先看左樹是否平衡,如果不是平衡的直接返回falseif(

!leftdata.isb)

//再看右樹是否平衡,如果不是平衡的直接返回false

returndata rightdata =

process

(head.right);if

(!rightdata.isb)

//此時檢視高度是否相差乙個

if(math.

abs(right.h - left.h)

>1)

//最後都滿足開始看整體高度差是否滿足不大於1

return

newreturndata

(true

, math.

max(leftdata.h, rightdata.h)+1

);}}

資料結構與演算法 平衡二叉樹

總結 如下 示例 package binarysorttree public class node override public string tostring 返回左子樹的高度 public int getleftheight return this.left.getheight 返回右子樹的高...

資料結構 平衡二叉樹的判斷

平衡二叉樹 balanced binary tree 具有以下性質 它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。判斷一棵樹是否為平衡二叉樹我們用遞迴方法實現。首先考錄特殊情況,如果樹為空則是平衡二叉樹,否則判斷它的左子樹是不是平衡二叉樹,如果是在判斷右...

資料結構 平衡二叉樹

1 空樹是平衡二叉樹。2 如果一棵樹不為空,並且其中所有的子樹都滿足各自的左子樹與右子樹的高度差都不超過 1。下面介紹乙個簡單應用,平衡二叉樹的相關操作以後補充。給定一顆二叉樹的頭結點 head,判斷一棵樹是否是平衡二叉樹。1.1 左子樹是否為平衡二叉樹 1.2 記錄左子樹的深度,最深到達哪一層,記...