【數據結構填空題】關于遞歸求二叉樹度為2的數目【C/C++編程】

【數據結構填空題】關于遞歸求二叉樹度為2的數目【C/C++編程】

前言:
昨天跟同學研究這道題目;然后一直在想,想出來了很多種,但是都是由于第二個if的原因最后遞歸調用不到.
因為我是從低向上去想這道題目的,然后填空的.最后還是經過不斷努力還是想出來了.

題目如下:
二又鏈表類型定義:
typedef struct BiTNode{
TElemType data;
struct BiTNode lchild,rchild;
},BiTNode,BiTree;
算法binode (BiTree T)實現計算二叉樹T中度為2的節(jié)點數目.
請在空確處填寫合適的內容,使其成為完整的算法。
int binode (BiTree T)/
計算二叉樹T中度為2的結點的數目*/
{
if(NULL==T)return (1);
if((2))return1;
return binode(T->lchild)+binode(3)
}

題目:二又鏈表類型定義:

typedef struct BiTNode{
  TElemType data;
  struct BiTNode *lchild,*rchild;
},BiTNode,*BiTree;

/*
算法binode (BiTree T)實現計算二叉樹T中度為2的節(jié)點數目.
請在空確處填寫合適的內容,使其成為完整的算法。
*/
int binode (BiTree T)/*計算二叉樹T中度為2的結點的數目*/
{
   if(NULL==T)return  (1);
   if((2))return1;
  return binode(T->lchild)+binode(3)
}
圖片版題目

我們先畫個二叉樹作參考(度為2的的數目為2個),本二叉樹的先序遍歷為A—B—D—E—C—F—G


度為2的的數目為2個
int binode(Bitree T) {
    if (T == NULL) return 0;
    if (T->lchild != NULL && T->rchild != NULL &&
    T->lchild->lchild == NULL && T->lchild->rchild == NULL &&
        T->rchild->lchild == NULL  && T->rchild->rchild == NULL) return 1;
    printf("\t%c", T->data);
    return B(T->lchild) + B(T->rchild)+(T->rchild!=NULL && T->lchild!=NULL? 1:0);
}
  • 第一空:0
  • 第二空:T->lchild != NULL && T->rchild != NULL &&T->lchild->lchild == NULL && T->lchild->rchild == NULL &&T->rchild->lchild == NULL && T->rchild->rchild == NULL
    注:第二空也可直接寫false
  • 第三空:(T->rchild)+(T->rchild!=NULL && T->lchild!=NULL? 1:0)

運行結果

運行結果

在讓我們測試另一顆二叉樹

這是一棵有3個度為2的節(jié)點
先序遍歷為A—B—D—E—C—F—G—H

度為2的的數目為3個

運行結果

運行結果

以上為本人的答案;其實計算二叉樹度為2的數目,我們一般這樣寫

int binode(Bitree T) {
    if (T == NULL) return 0;
    if(T->lchild != NULL &&T->rchild != NULL)  return B(T->lchild)+B(T->rchild)+1;
    return B(T->lchild)+B(T->rchild);
}

具體我就不分析,大家自己研究一下吧~
我也要學習去了,考研人,考研魂,考研都是人上人.
考研加油!


學習

寫于:2021年11月13日上午09點
作者QQ:420318184
郵箱:fy@0fy0.com

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容