二叉樹的幾道典型例題

2021-07-31 11:44:00 字數 1159 閱讀 5197

1.求二叉樹的高度

int _gettreehight(node* proot)

2.求葉子結點的個數

int _leafnodenum(node* proot)

3.判斷乙個資料是否在一棵二叉樹中

node* _find(node* proot,const t& data)

4.求二叉樹中兩個結點的最近公共祖先結點

bool getway(node* proot,node* n,vector*>& v,size_t index)

node* _lastancestornode(node* proot,node* n1,node* n2)

}}

return null;

}

5.查詢乙個節點的雙親節點

node* _findparent(node* proot,node* pret)			

node* pcur=_findparent(proot->_pleft,pret);

if(pcur)

return pcur;

return _findparent(proot->_pright,pret);

}

6.求二叉樹中最遠的兩個結點之間的距離

int _distanceofnodes(node* proot)

7.判斷一棵二叉樹是否是完全二叉樹

bool _iscompletebinarytree(node* proot)

while(!q.empty()&&(proot=q.front())==null)

if(!q.empty())

return false;

return true;

}

8.求二叉樹的映象

binarytreeimagebinarytree()		

void _imagebinarytree(node* proot)

平衡二叉樹例題 平衡二叉樹

acwing 72.平衡二叉樹 思路一 求每個節點的左右子樹深度,根據深度差判斷,直到葉子節點結束,效率不夠高,每個節點都要用兩次計算深度的遞迴函式 思路二 從葉子節點開始,計算深度差,一旦有深度差大於1的,就直接返回0,也不用管上面的深度是不是正確了,畢竟我們只需要true和false兩種狀態,省...

詳解二叉樹遞迴經典例題 二叉樹的映象

操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5 對我而言,第一眼看上去就像一道遞迴題。言歸正傳,所謂的映象二叉樹無非就是左右交換,你可以自頂向下地左右交換,也可以自底向上地左右交換。對我來說,可能自底...

平衡二叉樹例題 面試題 平衡二叉樹

題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。知識點平衡二叉樹 qiang的思路 平衡二叉樹是指乙個二叉樹的左子樹深度相差不超過1,可以相等或相差為1。為了判斷乙個二叉樹是不是平衡二叉樹,我們只需要計算出左子樹和右子樹的深度,然後進行對比即可。同樣在計算子樹深度的時候,我們又需要對每個節點...