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。為了判斷乙個二叉樹是不是平衡二叉樹,我們只需要計算出左子樹和右子樹的深度,然後進行對比即可。同樣在計算子樹深度的時候,我們又需要對每個節點...