国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)結(jié)構(gòu) C語言 樹形結(jié)構(gòu) 簡單目錄管理系統(tǒng)

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu) C語言 樹形結(jié)構(gòu) 簡單目錄管理系統(tǒng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

  1. 需求分析

在圖書、操作系統(tǒng)文件夾、學(xué)生等管理系統(tǒng)中,目錄管理是必要環(huán)節(jié),如何高效搜尋與低復(fù)雜度存儲(chǔ)是實(shí)現(xiàn)這一環(huán)節(jié)的關(guān)鍵性問題。本課程設(shè)計(jì)需完成一種基于多叉樹結(jié)構(gòu)簡單目錄管理系統(tǒng),該系統(tǒng)能以交互式界面進(jìn)行創(chuàng)建目錄、刪除目錄、查找目錄、修改目錄、層次遍歷目錄、深度遍歷目錄及退出管理系統(tǒng)操作。

  1. 設(shè)計(jì)目的

(1)完成一種簡單的目錄管理系統(tǒng),靈活運(yùn)用自己所學(xué)的數(shù)據(jù)結(jié)構(gòu)知識(shí)。

(2)系統(tǒng)的觀點(diǎn)和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā),鞏固、深化理論知識(shí),提高編程水平,并在此過程中培養(yǎng)嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和良好的工作作風(fēng)。

  1. 需求概述

完成一種簡單的目錄管理系統(tǒng),進(jìn)行高效搜尋與低復(fù)雜度存儲(chǔ),其具體功能需求如下:

  1. 交互性強(qiáng):能夠從終端進(jìn)行人機(jī)交互。

  1. 創(chuàng)建目錄:能夠已一種高效的數(shù)據(jù)結(jié)構(gòu)進(jìn)行數(shù)據(jù)的存儲(chǔ)。

  1. 刪除目錄:能夠刪除對(duì)應(yīng)的目錄信息。

  1. 查找目錄:能夠查找對(duì)應(yīng)的目錄信息,

  1. 修改目錄:能夠修改對(duì)應(yīng)的目錄信息。

  1. 層次遍歷目錄:能夠?qū)哟伪闅v目錄信息。

  1. 深度遍歷目錄:能夠深度遍歷目錄信息。

  1. 退出管理系統(tǒng):能夠退出管理系統(tǒng)。

  1. 需求說明

完成一種簡單的目錄管理系統(tǒng),進(jìn)行高效搜尋與低復(fù)雜度存儲(chǔ)。系統(tǒng)能夠以交互式界面完成目錄的查詢、添加、修改、刪除、排序等功能,主界面如下圖1-1所示。

設(shè)計(jì)要求:編寫一程序,模擬一個(gè)簡單的文件管理系統(tǒng)。樹型結(jié)構(gòu),目錄下可以是目錄,也,課程設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu),鏈表,c語言,算法,c++

圖1-1 主界面

  1. 概要設(shè)計(jì)

本節(jié)以上述需求明確具體數(shù)據(jù)結(jié)構(gòu)類型,數(shù)據(jù)存儲(chǔ)方式及功能函數(shù)封裝。由目錄管理系統(tǒng)的特性分析可知,一個(gè)父級(jí)目錄下可以有多個(gè)子級(jí)目錄,多個(gè)子級(jí)目錄并沒有順序關(guān)系。因此,本課程設(shè)計(jì)采取了多叉樹的數(shù)據(jù)結(jié)構(gòu)及進(jìn)行存儲(chǔ)數(shù)據(jù),以層次遍歷顯示所有文件,以深度遍歷找到根目錄到葉子目錄的最長文件路徑。

  1. 數(shù)據(jù)類型的定義

  1. 定義多叉樹的節(jié)點(diǎn)結(jié)構(gòu)體,代碼如下表2-1所示。

表2-1 多叉樹的節(jié)點(diǎn)結(jié)構(gòu)體源碼


typedef struct node_t
{
    char*  name;               // 節(jié)點(diǎn)名
    int   n_children;         // 子節(jié)點(diǎn)個(gè)數(shù)
    int   level;              // 記錄該節(jié)點(diǎn)在多叉樹中的層數(shù)
    struct  node_t** children; // 指向其自身的子節(jié)點(diǎn),children一個(gè)數(shù)組,該數(shù)組中的元素時(shí)node_t*指針
} NODE; // 對(duì)結(jié)構(gòu)體重命名
  1. 實(shí)現(xiàn)一個(gè)棧,用于輸出目錄時(shí),以子目錄到根目錄的順序進(jìn)行輸出,代碼如下表2-2所示。

表2-2 棧結(jié)構(gòu)體源碼


typedef struct stack_t
{
    NODE**  array; // array是個(gè)數(shù)組,其元素為NODE*型指針
    int    index; // 指示棧頂元素
    int    size;   // 棧的大小
} STACK; // 重命名
  1. 實(shí)現(xiàn)一個(gè)隊(duì)列,用于層次遍歷及深度遍歷進(jìn)行輸出,代碼如下表2-3所示。

表2-3 隊(duì)列結(jié)構(gòu)體源碼


typedef struct queue_t
{
    NODE**  array; // array是個(gè)數(shù)組,其內(nèi)部元素為NODE*型指針
    int    head;   // 隊(duì)列的頭
    int    tail;     // 隊(duì)列的尾
    int    num;    // 隊(duì)列中元素的個(gè)數(shù)
    int    size;   // 隊(duì)列的大小
} QUEUE;
  1. 功能模塊結(jié)構(gòu)圖

根據(jù)需求分析,為滿足用戶的功能需求,將系統(tǒng)設(shè)計(jì)為以下三大模塊:

  1. 顯示模塊:交互式界面顯示。

(2) 功能模塊:實(shí)現(xiàn)目錄的管理,如創(chuàng)建、刪除、查找、修改、遍歷等功能。

系統(tǒng)結(jié)構(gòu)如 圖 2-4所示:

設(shè)計(jì)要求:編寫一程序,模擬一個(gè)簡單的文件管理系統(tǒng)。樹型結(jié)構(gòu),目錄下可以是目錄,也,課程設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu),鏈表,c語言,算法,c++

圖2-4 系統(tǒng)結(jié)構(gòu)圖

  1. 功能模塊

為了實(shí)現(xiàn)上述功能模塊,分別在多叉樹數(shù)據(jù)結(jié)構(gòu)上定義了多個(gè)函數(shù),本系統(tǒng)定義的函數(shù)和功能如下表2-5所示:

表2-5 函數(shù)與功能對(duì)應(yīng)表

函數(shù)名稱

功能說明

void* util_malloc(int size)

內(nèi)存分配函數(shù)。

char* util_strdup(char* src)

字符串賦值函數(shù)。

FILE* util_fopen(char* name, char* access)

打開文件函數(shù)。

STACK* STACKinit(int size)

棧的初始化。

int STACKempty(STACK* sp)

判斷棧是否為空。

int STACKpush(STACK* sp, NODE* data)

壓棧操作。

int STACKpop(STACK* sp, NODE** data_ptr)

彈棧操作。

void STACKdestroy(STACK* sp)

棧的銷毀。

QUEUE* QUEUEinit(int size)

隊(duì)列初始化。

int QUEUEenqueue(QUEUE* qp, NODE* data)

入隊(duì)操作。

int QUEUEdequeue(QUEUE* qp, NODE** data_ptr)

出隊(duì)操作

int QUEUEempty(QUEUE* qp)

判斷隊(duì)列是否為空。

void QUEUEdestroy(QUEUE* qp)

隊(duì)列的銷毀。

NODE* create_node()

生成多叉樹節(jié)點(diǎn)。

NODE* search_node_r(char name[M], NODE* head)

按照節(jié)點(diǎn)名字查找。

void read_file(NODE** head, char* filename)

從文件中讀取多叉樹,并建立多叉樹。

void f1(NODE* head)

層次遍歷。

void free_tree_r(NODE* head)

銷毀樹。

void f2(NODE* head, char* str, char** strBest, int level)

深度遍歷。

void Welcome()

顯示界面

void Create()

輸入節(jié)點(diǎn)數(shù)據(jù)。

int main(int argc, char* argv[])

主界面。

  1. 詳細(xì)設(shè)計(jì)

本節(jié)在概要設(shè)計(jì)的基礎(chǔ)上,對(duì)每個(gè)模塊內(nèi)部邏輯處理部分進(jìn)行詳細(xì)設(shè)計(jì)。下面分別講述核心模塊具體實(shí)現(xiàn)方法及對(duì)應(yīng)流程圖。

  1. 主界面

本模塊旨在以良好的交互式界面,提供給客戶更好的操作體驗(yàn)。采取了while循環(huán)內(nèi)部判斷,根據(jù)按鍵判斷以調(diào)用相應(yīng)的處理函數(shù),若未定義按鍵則需要進(jìn)入等待直到按出指定按鍵才會(huì)進(jìn)入下一次循環(huán),具體代碼如下表3-1所示。

表3-1 主界面源碼


while(1){
                 system("cls");                                           // 清屏
                 Welcome();                                                        //  重新顯示界面
                 int i, cho;
                 scanf("%d",  &i);
                 if(1 == i)  Create();
//              if(2 == i)  Delete();
//              if(3 == i)  Search();
//              if(4 == i)  Alter();
                 if(5 == i)  Traversal1();
                 if(6 == i)  Traversal2();
                 if(7 == i)  {
                                                  printf("\n歡迎您再次使用本系統(tǒng)\n\n");
                                                  break;
                                          } 
                 printf("\n返回請(qǐng)輸入0\n");
                 begin:                                                                 //  goto 標(biāo)志位
                         scanf("%d",  &cho);
                 if(0 == cho){
                         continue;
                 }
                 else{
                         printf("您的輸入有誤,請(qǐng)重新輸入\n");
                         goto begin;                                                //  goto 到指定標(biāo)志位 begin
                 }
        }
  1. 創(chuàng)建多叉樹

本次設(shè)計(jì)通過外部文件與內(nèi)部存儲(chǔ)結(jié)合的方式構(gòu)造了多叉樹。需要在交互界面以父節(jié)點(diǎn)、子節(jié)點(diǎn)個(gè)數(shù)及子節(jié)點(diǎn)名稱的順序進(jìn)行輸入,輸入后的數(shù)據(jù)存放在 data.txt文本中。通過調(diào)用data.txt文本數(shù)據(jù)來進(jìn)行多叉樹的構(gòu)建,部 分源碼如下表3-2所示,流程圖如下圖3-3所示。

表3-2 創(chuàng)建多叉樹源碼

設(shè)計(jì)要求:編寫一程序,模擬一個(gè)簡單的文件管理系統(tǒng)。樹型結(jié)構(gòu),目錄下可以是目錄,也,課程設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu),鏈表,c語言,算法,c++

圖3-3 創(chuàng)建多叉樹流程圖

  1. 查找多叉樹

方式一:通過對(duì)文本操作,搜尋指定字符串是否存在。

方式二:遍歷多叉樹,判斷字符名是否相同,具體代碼如下表3-4所示。

表3-4查找多叉樹源碼


NODE*  search_node_r(char name[M], NODE* head)
{
    NODE* temp = NULL;
    int i = 0;
 
    if (head != NULL)
    {
        if (strcmp(name, head->name) == 0)  // 如果名字匹配
        {
            temp = head;
        }
        else // 如果不匹配,則查找其子節(jié)點(diǎn)
        {
            for (i = 0; i <  head->n_children && temp == NULL/*如果temp不為空,則結(jié)束查找*/; ++i)
            {
                temp = search_node_r(name,  head->children[i]); // 遞歸查找子節(jié)點(diǎn)
            }
        }
    }
 
    return temp; // 將查找到的節(jié)點(diǎn)指針返回,也有可能沒有找到,此時(shí)temp為NULL
}
  1. 刪除多叉樹

通過對(duì)文本操作,搜尋指定字符串是否存在后,刪除對(duì)應(yīng)節(jié)點(diǎn)。

  1. 修改多叉樹

通過對(duì)文本操作,搜尋指定字符串是否存在,修改對(duì)應(yīng)節(jié)點(diǎn)名稱。

  1. 層次遍歷多叉樹

通過隊(duì)列對(duì)父節(jié)點(diǎn)進(jìn)行存儲(chǔ),若不為空出隊(duì)操作,讓其子節(jié)點(diǎn)入隊(duì),遞歸實(shí)現(xiàn)。為了良好的用戶體驗(yàn),采取的棧的存儲(chǔ)結(jié)構(gòu),以子節(jié)點(diǎn)先輸出、父節(jié)點(diǎn)后輸出的順序進(jìn)行顯示,具體源碼如下表3-5所示。

表3-5層次遍歷多叉樹源碼


void  f1(NODE* head)
{
    NODE* p = NULL;
    QUEUE* q = NULL; // 定義一個(gè)隊(duì)列
    STACK* s = NULL; // 定義一個(gè)棧
    int i = 0;
 
    q = QUEUEinit(100); // 將隊(duì)列初始化大小為100
    s = STACKinit(100); // 將棧初始化大小為100
    
    head->level = 0; // 根節(jié)點(diǎn)的深度為0
    
    // 將根節(jié)點(diǎn)入隊(duì)列
    QUEUEenqueue(q, head);
 
    // 對(duì)多叉樹中的節(jié)點(diǎn)的深度值level進(jìn)行賦值
    // 采用層次優(yōu)先遍歷方法,借助于隊(duì)列
    while (QUEUEempty(q) == 0) // 如果隊(duì)列q不為空
    {
        QUEUEdequeue(q, &p); // 出隊(duì)列
        for (i = 0; i < p->n_children;  ++i)
        {
            p->children[i]->level =  p->level + 1; // 對(duì)子節(jié)點(diǎn)深度進(jìn)行賦值:父節(jié)點(diǎn)深度加1
            QUEUEenqueue(q,  p->children[i]);      // 將子節(jié)點(diǎn)入隊(duì)列
        }
        STACKpush(s, p); // 將p入棧
    }
 
    while (STACKempty(s) == 0) // 不為空
    {
        STACKpop(s, &p); // 彈棧
        fprintf(stdout, "第%d層 目錄名為:%s\n",p->level, p->name);
    }
 
    QUEUEdestroy(q); // 消毀隊(duì)列
    STACKdestroy(s); // 消毀棧
}
  1. 深度遍歷多叉樹

具體代碼如下表3-6所示。

設(shè)計(jì)要求:編寫一程序,模擬一個(gè)簡單的文件管理系統(tǒng)。樹型結(jié)構(gòu),目錄下可以是目錄,也,課程設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu),鏈表,c語言,算法,c++

表3-6 深度遍歷多叉樹源碼


voidf2(NODE* head, char* str, char** strBest, int level)
{
    int  i = 0; 
    char* tmp = NULL;
    if (head == NULL){
        return;
    }
    tmp = (char*)util_malloc((strlen(str) +strlen(head->name) + 1/*原程序中未加1*/) * sizeof(char));
    sprintf(tmp, "%s  %s", str, head->name);
    if (head->n_children == 0){
        if (*strBest == NULL || strlen(tmp)> strlen(*strBest)){
            free(*strBest);
            *strBest = util_strdup(tmp);
        }
    }
    for (i = 0; i < head->n_children;++i){
        f2(head->children[i], tmp, strBest,level + 1);
    }
    free(tmp);
}
 

4運(yùn)行結(jié)果

這里將展示部分功能的運(yùn)行結(jié)果。

4.1 主界面

主界面如下圖4-1所示。

設(shè)計(jì)要求:編寫一程序,模擬一個(gè)簡單的文件管理系統(tǒng)。樹型結(jié)構(gòu),目錄下可以是目錄,也,課程設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu),鏈表,c語言,算法,c++

圖4-1 主界面

4.2 主菜單界面

添加節(jié)點(diǎn)界面如下圖4-2所示。

設(shè)計(jì)要求:編寫一程序,模擬一個(gè)簡單的文件管理系統(tǒng)。樹型結(jié)構(gòu),目錄下可以是目錄,也,課程設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu),鏈表,c語言,算法,c++

圖4-2 添加節(jié)點(diǎn)界面

4.3 層次遍歷界面

層次遍歷界面如下圖4-3所示。

設(shè)計(jì)要求:編寫一程序,模擬一個(gè)簡單的文件管理系統(tǒng)。樹型結(jié)構(gòu),目錄下可以是目錄,也,課程設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu),鏈表,c語言,算法,c++

圖4-3 層次遍歷界面

4.4 深度遍歷界面

深度遍歷界面如下圖4-4所示。

設(shè)計(jì)要求:編寫一程序,模擬一個(gè)簡單的文件管理系統(tǒng)。樹型結(jié)構(gòu),目錄下可以是目錄,也,課程設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu),鏈表,c語言,算法,c++

圖4-4 深度遍歷界面

代碼內(nèi)容

源碼可私信摸魚哥獲?。c(diǎn)個(gè)關(guān)注私信即可)文章來源地址http://www.zghlxwxcb.cn/news/detail-765110.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu) C語言 樹形結(jié)構(gòu) 簡單目錄管理系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)課設(shè)—C語言實(shí)現(xiàn)通訊錄管理系統(tǒng)(順序表實(shí)現(xiàn))

    數(shù)據(jù)結(jié)構(gòu)課設(shè)—C語言實(shí)現(xiàn)通訊錄管理系統(tǒng)(順序表實(shí)現(xiàn))

    這個(gè)項(xiàng)目是我大一時(shí)期數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì),在我潛心研究下出來的,對(duì)于當(dāng)時(shí)的我來說算是非常滿意啦,哈哈哈哈哈哈哈哈哈哈☆*: .?. o(≧▽≦)o .?.:*☆ 目錄 一、引言 1.目的: 2.意義: 3.主要任務(wù): 4.程序功能: 5.編譯工具: 二、正文 1.系統(tǒng)模塊: 2.算法流程圖: 3.各

    2024年02月02日
    瀏覽(98)
  • 【C語言&&數(shù)據(jù)結(jié)構(gòu)】簡單題目

    【C語言&&數(shù)據(jù)結(jié)構(gòu)】簡單題目

    ?作者:@平凡的人1 ?專欄:《小菜鳥愛刷題》 ?一句話:凡是過往,皆為序章 ?說明: 過去無可挽回, 未來可以改變 為了方便自己的學(xué)習(xí)以及基于好久沒更新博客的原因。特地寫了這一篇博客 。?? 本篇博客是一篇記錄學(xué)習(xí)篇,我將之歸納于刷題專欄。方便自己的復(fù)習(xí)以

    2023年04月08日
    瀏覽(26)
  • 數(shù)據(jù)結(jié)構(gòu)-棧(C語言簡單實(shí)現(xiàn))

    數(shù)據(jù)結(jié)構(gòu)-棧(C語言簡單實(shí)現(xiàn))

    棧是一種數(shù)據(jù)結(jié)構(gòu) ??梢杂脕泶娣艛?shù)字 一次只能向棧里加入一個(gè)數(shù)字,一次也只能從棧里獲得一個(gè)數(shù)字 棧里到的數(shù)字有前后順序,先進(jìn)入到的數(shù)字在前,后進(jìn)入的數(shù)字在后 每次從棧里獲取的數(shù)字一定是最后面的數(shù)字,最后獲取的數(shù)字一定是最前面的數(shù)字 這種取數(shù)字的方法

    2024年02月13日
    瀏覽(22)
  • 數(shù)據(jù)結(jié)構(gòu)初階(用C語言實(shí)現(xiàn)簡單數(shù)據(jù)結(jié)構(gòu))--棧和隊(duì)列

    數(shù)據(jù)結(jié)構(gòu)初階(用C語言實(shí)現(xiàn)簡單數(shù)據(jù)結(jié)構(gòu))--棧和隊(duì)列

    ??歡迎來到T_X_Parallel的博客!! ?????????博客主頁:T_X_Parallel ?????????專欄 : 數(shù)據(jù)結(jié)構(gòu)初階 ?????????歡迎關(guān)注:??點(diǎn)贊??收藏??留言 這小貓真好看 言歸正傳,通過上篇有關(guān)順序表和鏈表的博客,可以了解到線性表的一些大致特征,這篇博

    2024年02月08日
    瀏覽(25)
  • 基于C語言的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(學(xué)生管理系統(tǒng)、停車場管理、家譜管理、校園導(dǎo)航系統(tǒng))

    基于C語言的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(學(xué)生管理系統(tǒng)、停車場管理、家譜管理、校園導(dǎo)航系統(tǒng))

    一、設(shè)計(jì)目的 本課程設(shè)計(jì)是軟件工程學(xué)生的必修課程,數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)既是一門基礎(chǔ)課程,又是一門實(shí)踐性課程。 通過本實(shí)訓(xùn)課程的學(xué)習(xí)和訓(xùn)練,使同學(xué)學(xué)會(huì)分析研究數(shù)據(jù)對(duì)象的特性,學(xué)會(huì)數(shù)據(jù)的組織方法,以便選擇合適的數(shù)據(jù)邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu),以及相應(yīng)的運(yùn)

    2024年02月09日
    瀏覽(20)
  • 數(shù)據(jù)結(jié)構(gòu)-隊(duì)列(C語言的簡單實(shí)現(xiàn))

    數(shù)據(jù)結(jié)構(gòu)-隊(duì)列(C語言的簡單實(shí)現(xiàn))

    隊(duì)列也是一種數(shù)據(jù)結(jié)構(gòu),隊(duì)列也可以用來存放數(shù)字 每次只能向隊(duì)列里將入一個(gè)數(shù)字,每次只能從隊(duì)列里獲得一個(gè)數(shù)字 在隊(duì)列中,允許插入的一段稱為入隊(duì)口,允許刪除的一段稱為出隊(duì)口 它的原則是先進(jìn)先出(FIFO: first in first out),先進(jìn)入隊(duì)列的數(shù)據(jù)先出去,后進(jìn)入的后出去。

    2024年02月13日
    瀏覽(26)
  • 數(shù)據(jù)結(jié)構(gòu)(9)樹形結(jié)構(gòu)——大頂堆、小頂堆

    數(shù)據(jù)結(jié)構(gòu)(9)樹形結(jié)構(gòu)——大頂堆、小頂堆

    目錄 9.1.概述 ?9.2.操作 9.2.1.插入 9.2.2.刪除 9.2.3.代碼實(shí)現(xiàn) 概念: 根節(jié)點(diǎn)是自己所在子樹中的 最值 的 完全二叉樹。 根節(jié)點(diǎn)是所在子樹的最大值,稱為大頂堆。 根節(jié)點(diǎn)是所在子樹的最小值,稱為小頂堆。 堆的任何子樹的根節(jié)點(diǎn)到子樹上的任意節(jié)點(diǎn),路徑上的節(jié)點(diǎn)都是有序的

    2024年02月06日
    瀏覽(22)
  • 數(shù)據(jù)結(jié)構(gòu)與算法:樹形查找

    數(shù)據(jù)結(jié)構(gòu)與算法:樹形查找

    左子樹結(jié)點(diǎn)值 根結(jié)點(diǎn)值 右子樹結(jié)點(diǎn)值 對(duì)二叉排序樹進(jìn)行中序遍歷,可以得到一個(gè)遞增的有序數(shù)列 原理: 對(duì)于一個(gè)給定的二叉排序樹,如果要查找一個(gè)節(jié)點(diǎn),可以按照以下步驟進(jìn)行: 從根節(jié)點(diǎn)開始比較。 如果要查找的值等于當(dāng)前節(jié)點(diǎn)的值,則找到了目標(biāo)節(jié)點(diǎn),返回該節(jié)點(diǎn)。

    2024年02月06日
    瀏覽(22)
  • 【數(shù)據(jù)結(jié)構(gòu)】樹形結(jié)構(gòu)所有路徑復(fù)原為鏈表

    【數(shù)據(jù)結(jié)構(gòu)】樹形結(jié)構(gòu)所有路徑復(fù)原為鏈表

    目錄 1. 樹形結(jié)構(gòu)可視化 2. 樹形結(jié)構(gòu)轉(zhuǎn)為鏈表 此目標(biāo)是要還原樹形結(jié)構(gòu)的所有路徑。樹形結(jié)構(gòu)是一種常見的數(shù)據(jù)結(jié)構(gòu),它表示元素之間層次關(guān)系。在樹形結(jié)構(gòu)中,每個(gè)節(jié)點(diǎn)可能擁有一個(gè)或多個(gè)子節(jié)點(diǎn),形成了一個(gè)分層的結(jié)構(gòu)。為了還原樹形結(jié)構(gòu)的路徑,我們需要找到從根節(jié)點(diǎn)

    2024年02月06日
    瀏覽(26)
  • Java獲取樹形結(jié)構(gòu)數(shù)據(jù)

    Java獲取樹形結(jié)構(gòu)數(shù)據(jù)

    目錄 前言: 開發(fā)前準(zhǔn)備: 數(shù)據(jù)庫: 實(shí)體類: VO對(duì)象: 代碼實(shí)現(xiàn): Controller層: Service層: 運(yùn)行結(jié)果: 第二種 在日常的開發(fā)或者工作需求中,我們會(huì)用到樹形結(jié)構(gòu)數(shù)據(jù)。樹形結(jié)構(gòu)是一個(gè)比較常用的數(shù)據(jù)類型,一般多用于查詢包含父子類關(guān)系的數(shù)據(jù)。我們常常通過父級(jí)id和層

    2024年02月12日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包