<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ChenGen

    一切歸零,重新開始
    隨筆 - 13, 文章 - 10, 評論 - 21, 引用 - 0
    數據加載中……

    復習二叉排序樹

    ???二叉排序數是一種很重要的數據結構,今天復習了一下如何創建一棵二叉排序數&二叉排序數的兩種中序遍歷方法——遞歸中序遍歷&非遞歸的中序遍歷。

    ???宏定義&頭文件:

    #include? " stdio.h "
    #include?
    " stdlib.h " ? /* 內存分配*/
    #include? " ctype.h " ? /* 字符操作*/
    #define?MAXNUM? 100 ? /* 非遞歸時的棧的大小*/


    ???數據結構:

    typedef?struct?node {
    ????
    int ?data;
    ????struct?node?
    * left;
    ????struct?node?
    * right;
    }
    ?Node;

    ???生成一棵二叉排序數:???
    Node?*CreateTree()
    {
    ????
    int?p,data;
    ????
    char?buffer[100],ch;
    ????Node?
    *head;
    ????head
    =NULL;????/*This?is?very?important!*/
    ????
    while((ch=getchar())!=EOF){
    ????????p
    =0;
    ????????
    if(isspace(ch))?/*過濾空格*/
    ????????????
    continue;
    ????????
    else?if(isdigit(ch)){
    ????????????buffer[p
    ++]=ch;
    ????????????
    for(ch=getchar();isdigit(ch);ch=getchar())
    ????????????????buffer[p
    ++]=ch;
    ????????????ungetc(ch,stdin);
    ????????????buffer[p]
    ='\0';
    ????????????data
    =atoi(buffer);?/*將字符串轉化為整數*/
    ????????}

    ????????InsertNode(
    &head,data);/*向樹中插入一個結點*/
    ????}

    ????
    return?head;
    }


    void?InsertNode(Node?**head,int?data)
    {
    ????
    if(*head==NULL){?/*如果結點為空,正是要插入的位置*/
    ????????
    *head=(Node?*)malloc(sizeof(Node));
    ????????(
    *head)->data=data;
    ????????(
    *head)->left=NULL;
    ????????(
    *head)->right=NULL;
    ????}

    ????
    else{
    ????????
    if(data<(*head)->data)?InsertNode(&((*head)->left),data);/*插入左子樹*/
    ????????
    else?InsertNode(&((*head)->right),data);/*插入右子樹*/
    ????}

    }

    ???二叉排序數的遞歸中序遍歷:
    void?MidTravel(Node?*head)
    {
    ????
    if(head){
    ????????MidTravel(head
    ->left);?/*遍歷左子樹*/
    ????????printf(
    "%d\t",head->data);?/*輸出結點值*/
    ????????MidTravel(head
    ->right);?/*遍歷又子樹*/
    ????}

    }

    ???二叉排序數的非遞歸遍歷:
    void?MidTravel2(Node?*p)
    {
    ????Node?
    *a[MAXNUM];?/**/
    ????
    int?top;?/*棧頂*/
    ????top
    =0;
    ????
    while(p?||?top){
    ????????
    while(p){
    ????????????
    if(top==MAXNUM)?{
    ????????????????printf(
    "over?flow\n");
    ????????????????exit(
    -1);
    ????????????}

    ????????????a[top
    ++]=p;?/*入棧*/
    ????????????p
    =p->left;?/*遍歷左子樹*/
    ????????}

    ????????
    if(top){
    ????????????p
    =a[--top];?/*出棧*/
    ????????????printf(
    "%d\t",p->data);?/*輸出結點值*/
    ????????????p
    =p->right;?/*遍歷右子樹*/?
    ????????}

    ????}

    }

    posted on 2006-09-27 14:33 ChenGen 閱讀(1681) 評論(2)  編輯  收藏 所屬分類: 數據結構復習

    評論

    # re: 復習二叉排序樹  回復  更多評論   

    又有沙發座了
    2006-09-27 11:05 | 壞男孩1

    # re: 復習二叉排序樹  回復  更多評論   

    呵呵,支持下!
    2006-09-28 08:37 | 冰川
    主站蜘蛛池模板: 一区二区三区亚洲| 内射少妇36P亚洲区| 亚洲综合激情五月色一区| 免费h视频在线观看| 亚洲午夜爱爱香蕉片| 看免费毛片天天看| 在线观看免费国产视频| 亚洲色欲色欲www在线播放| 成视频年人黄网站免费视频| 亚洲色图校园春色| 四虎成年永久免费网站| 免费观看的a级毛片的网站| 日韩亚洲国产二区| 久久久久亚洲AV片无码下载蜜桃| 精品国产污污免费网站| 亚洲AV日韩AV天堂一区二区三区| 亚洲AV永久无码精品一福利 | 在线看亚洲十八禁网站| 日本二区免费一片黄2019| 亚洲日韩AV一区二区三区四区| 免费黄色网址入口| 黄色片网站在线免费观看| 国产亚洲av片在线观看18女人| 国产真人无码作爱免费视频| 亚洲AV无码成人精品区在线观看| 99久久久国产精品免费牛牛 | 亚洲无码高清在线观看| 抽搐一进一出gif免费视频| 亚洲国产a∨无码中文777| 99久久免费精品视频| 亚洲精品中文字幕| 亚洲 综合 国产 欧洲 丝袜 | 黄页网站在线视频免费| 国产亚洲美日韩AV中文字幕无码成人| 97在线免费视频| 亚洲成无码人在线观看| 国产成人免费永久播放视频平台| 中文字幕av免费专区| 亚洲专区中文字幕| 亚洲国产人成精品| 亚洲大片免费观看|