1 求二叉樹第K層節點的個數
由於二叉樹特殊的性質,因此大部分二叉樹的問題都可以通過遞歸的方法來解決。
求二叉樹第K層節點的個數,可以想到層次遍歷的方法,但是這個問題也可以通過遞歸的方法來解決,代碼如下:
int GetNodeNumK(Node *root,int k)
{
if(!root||k<1)return 0;
//應該還要確定k不大於最大的層數,應該在調用此函數之前確認這一點,這裏不再判斷
if(k==1)return 1;
return GetNodeNumK(root->left,k-1)+GetNodeNumK(root->right,k-1);
}
2 求二叉樹的葉子節點數
只需遞歸的去判斷,遇到左右孩子都爲空的情況計數器加1.
void CountLeaf(BiTree T,int & Count)
{
if(T)
{
if((T->lchild==NULL)&&(T->rchild))
Count++;//如果左右子樹都爲空,則爲葉子節點,則葉子節點數加一
else
{
CountLeaf(T->lchild,Count);
CountLeaf(T->rchild,Count);
}
}
}