【數據結構填空題】關于遞歸求二叉樹度為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