求二叉樹第K層節點的個數和二叉樹中葉子節點數

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);
        }  
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章