劍指offer之面試題55 2 平衡二叉樹

2021-10-04 23:18:42 字數 766 閱讀 3862

1、題目

輸入一顆二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中的任意節點的左、右子樹的深度相差不超過1,那麼它就是一顆平衡二叉樹。

輸入引數:二叉樹的根節點,指向二叉樹深度的int型指標

輸出結果:true 或者 false

2、解題

這道題的關鍵在於如何在只遍歷一次二叉樹的情況下,對是否是平衡二叉樹進行判定

由於平衡二叉樹取決於左右子樹的深度之差,所以我們想到使用後序遍歷演算法,先遍歷左右子樹,在遍歷每個節點的時候記錄它的深度,然後對節點是否平衡進行判定。

解題的具體步驟:

若左右子樹**現不平衡的情況,在函式最後返回false

3、**

bool isbalancedtree

(binarytreenode* proot,

int* pdepth)

//先遍歷左右子樹

int left, right;if(

isbalancedtree

(proot->m_pleft,

&left)

&&isbalancedtree

(proot->m_pright,

&right))}

//若左右子樹**現不平衡的情況,最後返回false

return false;

}

4、注意點

劍指offer之面試題9 4 矩形覆蓋

題目描述 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?思路 用數學歸納的思想分析,得出規律。牛客網提交 public class solution if target 2 return init target int...

劍指offer之面試題16 反轉鍊錶

題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。思路 借助圖形來分析一下反轉鍊錶需要改變哪些指標。假設某一時刻,經過若干操作,我們已經把h點之前的指標調整完畢,現在反轉i指標指向的結點。由圖可知,為了防止指標的斷開,需要儲存i的next指標,為了完成反轉,需要知道i的前乙個指標prev,當然...

劍指offer面試題7

面試題7 用兩個棧實現佇列 using namespace std template class cqueue 預備知識 佇列 佇列也是一種常見的資料結構 特點是先進先出 fifo 在stl中有stack和queue兩個容器 template class stack 成員函式 empty size ...