判斷乙個二叉樹是否為平衡二叉樹(樹形dp)

2021-10-24 11:51:51 字數 583 閱讀 9245

平衡二叉樹的嚴格定義是,一棵二叉樹的任何乙個結點,左子樹和右子樹的高度差不超過一,即為平衡二叉樹。

判斷是否平衡二叉樹的大體思路是,以每乙個結點為頭結點的二叉樹都是平衡二叉樹,那整棵樹都是平衡二叉樹,

(1)判斷左樹是否平衡,如果不平衡返回false

(2)判斷右樹是否平衡,如果不平衡返回false

(3)拿到左樹的高度

(4)拿到右樹的高度

(5)判斷左右樹高度差是否超過一,超過一,返回false

下面就可以根據上述的這些資訊,設計遞迴返回結構,遍歷左樹的過程,應該給我返回左樹是否平衡,以及左樹高度這兩個資訊。右樹需要返回的資訊也一樣,所以整理出遞迴函式的返回值,應該包括高度,和是否平衡這兩個資訊

下面看**:

class

isbalancedtree};

class

returndata};

returndata process

(node *head)

bool

isb(node *head)

};

判斷二叉樹是否為平衡二叉樹

一 線性思維 遍歷每個節點都時候,求左右子樹的深度,如果左右子樹深度相差不超過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...