建立二叉樹,完全無法理解,完全是二叉樹的定義

發布 科學 2024-08-15
8個回答
  1. 匿名使用者2024-02-01

    你手動畫乙個二叉樹,在程式的每一行上執行,因為程式涉及遞迴,最好也畫遞迴過程,如何傳遞值,如何回滾,然後你就可以說清楚了。 用語言談論它並不容易,但畫一幅畫是很清楚的。

  2. 匿名使用者2024-01-31

    遞迴的概念更容易理解。

  3. 匿名使用者2024-01-30

    完整二叉樹的定義:乙個有n個深度為k的節點的二叉樹,如果編號為i(1 i n)的節點在二叉樹中的位置與完整二叉樹中編號為i的節點在二叉樹中的位置相同, 那麼二叉樹被稱為完整的二叉樹。

    除了普通二叉樹的屬性外,乙個完整的二叉樹也有它自己的一些獨特的屬性,例如,乙個有n個節點的完整二叉樹的深度為log2n +1。 log2n 表示小於 log2n 的最大整數。 例如,log24 = 2,log25 結果為 2。

    對於任何乙個完整的二叉樹,如果其中包含的節點按照層次結構從左到右編號(如圖a所示),對於任何乙個節點i,完整的二叉樹有以下結論:

    1.當i>1時,父節點為節點[i 2](當i=1時,代表根節點,沒有父節點)。

    2. 如果 2*i>n(彙總點數),則節點 i 不能有左子節點(對於葉節點); 否則,它的左子節點是節點 2*i。

    3. 如果 2*i+1>n,則節點 i 一定沒有正確的子節點; 否則,正確的子節點是節點 2*i+1。

    全二叉樹的應用

    乙個完整的二叉樹的優點是,有了完整的二叉樹,我們可以直接將乙個陣列對映到一棵樹上,而不需要修改陣列的形狀,然後通過這個樹對陣列進行操作,而其他很多結構樹的樹也要求樹是完整的二叉樹, 比如堆,它要求堆是乙個完整的二叉樹。

  4. 匿名使用者2024-01-29

    C語言複合體。

    要建立二叉樹,需要使用結構來定義樹 bai 的資料型別。 樹的資料結構有一些資料字段,以及 DAO 的多個指標字段。 當然,對於二叉樹,一般可以定義兩個指向根節點左右子節點的指標字段。

    資料結構定義:

    struct tree;

    動態記憶體請求可以用來實際構建二叉樹,這是一種常見的方法(如果你不知道動態記憶體請求,你可以先看看它們),但是當有很多子樹時,這樣做可能會花費很多時間。

    因此,可以提前為儲存樹彌補記憶體空間。 例如,tree t[2000]; 如果需要建立新的子樹,只需為陣列中的左側或右側子節點之一賦值即可。

    如果您有任何問題,請隨時跟進。

  5. 匿名使用者2024-01-28

    #define null 0

    #include ""

    #include ""

    二進位鍊表節點定義。

    struct tree

    按順序建立二叉樹。

    struct tree *create(struct tree *bt,int k)

    return(bt);

    預購遍歷。

    int visit(struct tree *bt)return 0;

    void main()

  6. 匿名使用者2024-01-27

    1. 第乙個數字 50 用作根節點。

    所有數字都應首先與 50 進行比較,大數字在右邊,小數字在左邊)。

    2.第二個數字72大於50,如果大於50,則向右側分叉。

    3.第三個數字43與50相比,小於50,向左分叉。

    先和50比較,應該在右邊,但是右邊已經有72了,85的位置和72重複,所以衝突的位置應該作為節點繼續分叉,所以和72比較後,85大於72,就分叉到72的右邊。

    與50相比,放在左邊,左邊有43,所以位置重複,43應該作為節點繼續叉子,20小於43,所以放在43叉子之後的左側。

    與50相比,放在左側,但是用43,繼續分叉,它應該放在43分叉之後的左側,但是這個位置有20,所以用20作為節點繼續分叉,叉子大於20後,放在右側20以下。

    與50相比,小於50,放在左邊,左邊有43,繼續分叉,因為它大於43,所以放在右邊的43,一排20。

    與30類比,最終答案如下圖所示:

  7. 匿名使用者2024-01-26

    二叉樹排序的目標是建立乙個二叉樹,其中左子小於它,右子大於每個節點。

    如果逐點插入,請從 50 作為根開始,然後按順序插入。

    例如,72 歲大於 50 歲,是 50 歲的兒子。

    43 歲小於 50 歲,是 50 歲的左兒子。

    85 歲比 50 歲大,但此時 50 歲已經有了合適的兒子 75 歲,所以 85 歲比 75 歲大,因為 75 歲的兒子。

    同樣,你可以建立乙個二叉樹。

    查詢 30 時,由於 30 小於 50,請轉到左側。 等等......

  8. 匿名使用者2024-01-25

    reat()。 你正在使用遞迴,並且你正在構建乙個完整的二叉樹。 它首先構建根節點,然後構建左子樹,然後在左子樹完成後構建右子樹。 但是,如果你只是不停地輸入非零值,你就是在無休止地構建左子樹。

    注意,由於你的程式正在構建乙個完整的二叉樹(即每個根節點有兩個子節點),如果你想完成左子樹的構建,你需要輸入的 0(構建你的 null 節點)會隨著樹的層數呈指數增長,一旦你輸入了足夠多的非零值, 就算是10,需要輸入的0個數也會在8到16之間,如果你沒有耐心,你當然會認為自己進入了乙個無盡的迴圈。

    把 t->lchild=creat(); 更改為 t->data=x; 之前,然後執行,你不要輸入太多非零值,7 就夠了,然後繼續輸入 0,你自己數一數,你想輸入多少個零,看看是不是 2 3。 如果你必須構造乙個完整的二叉樹,你不必改變程式,最多把它改成我上面說的,廣度就會被優先考慮。

    廣度優先,你只需要最後一次輸入 0,你不必在最後輸入 0,就像深度先輸入的情況一樣,你不知道什麼時候在最後輸入 0。

    請新增詳細說明。

相關回答
4個回答2024-08-15

全二叉樹和完全二叉樹是二叉樹的兩種特殊形式。 完整的二叉樹意味著每個節點有兩個子節點,或者沒有子節點(即每個節點的度數為 2 或 0)。 完整的二叉樹是指除最後一層之外的所有節點都具有最大數量的節點,並且最後一層的節點盡可能集中在左側。 >>>More

8個回答2024-08-15

在一棵完整的二叉樹中,任何節點的左右子樹的深度都是相等的,所以你只需要做乙個backroot遍歷就可以知道乙個二叉樹是否是乙個完整的二叉樹。 >>>More

4個回答2024-08-15

平衡二叉樹不一定是二叉排序樹,平衡二叉樹是一棵旨在避免二叉排序樹高度增長過快而降低二叉排序樹效能的樹。 >>>More

9個回答2024-08-15

後遍歷:4275631

第 1 步:遍歷前言中的1243576 >>>More

15個回答2024-08-15

根據銘文,樹中的節點總數為n,所有分支節點的度數為m,樹中只有度為0的葉節點n0和度為m的分支節點nm。 彙總點數 n n0+nm; 由於每個分支指向乙個節點,而只有根節點不指向乙個分支,因此彙總點數n m*nm+1;根據這兩個方程,我們可以找到葉子的數量 n0 ((m 1)*n+1) m