平衡二叉樹的定義是:
它是一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。
我們要判斷是否為平衡二叉樹就要一直遞迴判斷它的子樹是否為平衡二叉樹,一層層去判斷。
**如下所示:
package problems_2017_08_21;
/** * @author islongfei
* 判斷二叉樹是否為平衡二叉樹
* (它是一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。)
【題目】
平衡二叉樹的性質為:要麼是一棵空樹,要麼任何乙個節點的左右子樹高度差的絕對值不超過1。
給定一棵二叉樹的頭節點head,判斷這棵二叉樹是否為平衡二叉樹。
*/public class problem_02_isbalancedtree
} public static boolean isbalance(node head)
/*** @param head 頭節點
* @param level 樹的高度
* @param res 表示是否平衡
* @return
*/public static int getheight(node head, int level, boolean res)
int lh = getheight(head.left, level + 1, res);//得到左子樹高度
if (!res[0])
int rh = getheight(head.right, level + 1, res);//得到右子樹高度
if (!res[0])
if (math.abs(lh - rh) > 1)
return math.max(lh, rh);
} public static void main(string args)
}
判斷二叉樹是否為平衡二叉樹
一 線性思維 遍歷每個節點都時候,求左右子樹的深度,如果左右子樹深度相差不超過1,繼續遞迴遍歷左右節點,此種方法會重複遍歷,時間效率不高 is balanced t if t is null return true left treedepth t.left right treedepth t.ri...
判斷二叉樹是否為平衡二叉樹
題目 平衡二叉樹的性質為 要麼是一棵空樹,要麼任何乙個節點的左右子樹高度差的絕對值不超過1。給定一棵二叉樹的頭結點head,判斷這棵二叉樹是否為平衡二叉樹。要求 如果二叉樹的節點數為n,要求時間複雜度為o n 判斷二叉樹是否為二叉樹 public boolean isbalance node hea...
判斷二叉樹是否為平衡二叉樹
要判斷二叉樹是否為平衡二叉樹 平衡二叉樹的定義 在乙個二叉樹中 每個節點子樹的左右高度差不超過1 1 首先判斷它的根節點是否為空 若是的話,就是平衡二叉樹 2 分別求出左右子樹的高度 若高度的絕對值不超過一則為平衡二叉樹 計算二叉樹高度 public static int calchigh node...