西南科技大學OJ題 輸出利用先序遍歷創建的二叉樹中的指定結點的度1053

輸出利用先序遍歷創建的二叉樹中的指定結點的度

 1000(ms)

 10000(kb)

 2283 / 7175

利用先序遞歸遍歷算法創建二叉樹並輸出該二叉樹中指定結點的度。約定二叉樹結點數據爲單個大寫英文字符。當接收的數據是字符“#”時表示該結點不需要創建,否則創建該結點。最後再輸出創建完成的二叉樹中的指定結點的度。注意輸入數據序列中的字符“#”和非“#”字符的序列及個數關係,這會最終決定創建的二叉樹的形態。

輸入

輸入用例分2行輸入,第一行接受鍵盤輸入的由大寫英文字符和“#”字符構成的一個字符串(用於創建對應的二叉樹),第二行爲指定的結點數據。

輸出

用一行輸出該用例對應的二叉樹中指定結點的度。

樣例輸入

A##
A
ABC####
B

樣例輸出

0
1

 

 

#include<stdio.h>
#include<malloc.h>
struct BTNode
{
    char data;
    struct BTNode *lchlid;
    struct BTNode *rchild;
};
void PreOrder(struct BTNode *&p)//先序遍歷創建二叉樹 
{
    char a;
    scanf("%c",&a);
    if(a=='#') p=NULL;
    else
    {
        p=(struct BTNode*)malloc(sizeof(struct BTNode));
        p->data=a;
        PreOrder(p->lchlid);
        PreOrder(p->rchild);
    }
}
void SearchBT(struct BTNode *p,int data)//查找指定結點 
{
    if(p!=NULL)
    {
        if(p->data==data)
        {
            if(p->lchlid!=NULL&&p->rchild!=NULL) printf("2");
            else if(p->lchlid==NULL&&p->rchild==NULL) printf("0");
            else printf("1");
        }
        else
        {
            SearchBT(p->lchlid,data);
            SearchBT(p->rchild,data);
        }
    }
}
int main()
{
    struct BTNode *p;
    PreOrder(p);
    getchar();//抵消回車字符 
    char data;
    scanf("%c",&data);
    SearchBT(p,data);
}

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