判斷樹是否為平衡二叉樹

2021-09-30 12:47:52 字數 909 閱讀 6190

來自劍指offer

用遞迴做很簡單,只要知道遞迴出口語句的別寫錯。

[cpp]view plain

copy

print?

struct

binarytreenode  

;  int

treedepth(binarytreenode* proot)    

方法一:呼叫上述函式求每個節點的左右孩子深度

[cpp]view plain

copy

print?

bool

isbalanced(binarytreenode* proot)    

方法二:由於上述方法在求該結點的的左右子樹深度時遍歷一遍樹,再次判斷子樹的平衡性時又遍歷一遍樹結構,造成遍歷多次。因此方法二是一邊遍歷樹一邊判斷每個結點是否具有平衡性。

[cpp]view plain

copy

print?

bool

isbalanced(binarytreenode* proot, 

int* depth)  

intnleftdepth,nrightdepth;  

bool

bleft= isbalanced(proot->m_pleft, &nleftdepth);  

bool

bright = isbalanced(proot->m_pright, &nrightdepth);  

if(bleft && bright)  

}  return

false

;  }  

bool

isbalanced(binarytreenode* proot)    

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

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