110 平衡二叉樹

2021-09-29 08:56:05 字數 1151 閱讀 8662

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。

本題中,一棵高度平衡二叉樹定義為:

乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。

示例 1:

給定二叉樹 [3,9,20,null,null,15,7]

返回 true 。

示例 2:

給定二叉樹 [1,2,2,3,3,null,null,4,4]

返回 false 。

當發現不是平衡樹時,後面的高度計算都沒有意義了,因此一路返回-1,避免後續多餘計算。

最差情況是對樹做一遍完整dfs,時間複雜度為 o(n)。

/**

* definition for a binary tree node.

* public class treenode

* }*/class solution

int res =

counthigh

(root);if

(res ==-1

)return true;

} public int

counthigh

(treenode p)

else

if(p.left == null && p.right == null)

int q =

counthigh

(p.left)

;int r =

counthigh

(p.right);if

(math.

abs(q-r)

>=

2|| q ==-1

|| r ==-1

)else

}}

本方法產生大量重複的節點訪問和計算,最差情況下時間複雜度 o(n^2)。

class solution 

private int

depth

(treenode root)

}

110 平衡二叉樹

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回 true 示例 2 給定二叉樹 1,2,2,3,3,null,n...

110 平衡二叉樹

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回 true 思路 注釋 private boolean isbala...

110 平衡二叉樹

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回 true 示例 2 給定二叉樹 1,2,2,3,3,null,n...