-
二叉樹。 繪圖方法可分為:
1. 確定根節點。
2.確定節點的左子和右子。
3. 遞迴,直到所有節點不再有子節點。
根據二叉樹的具體儲存結構,確定根節點和子節點的方法也不同。
從您的關係圖中,g 是按層遍歷的。
,從上到下,從左到右。
如果液體儲存在陣列中,則可以表示為。
索引 0 1 2 3 4 5 6 7 8
節點 a、b、c、d、null、e f、null g
第乙個節點是根節點。
索引號為 i 的節點:
左子索引號 2i 1
右邊的兒子的索引號是 2i 2
從根節點遞迴允許您繪製整個樹; 如果是鍊表。
儲存,其實體地址。
與邏輯位址沒有直接的聯絡,只能通過第一點之間的邏輯來推導。
-
reat()。 你正在使用遞迴,並且你正在構建乙個完整的二叉樹。 它首先構建根節點,然後構建左子樹,然後在左子樹完成後構建右子樹。 但是,如果你只是不停地輸入非零值,你就是在無休止地構建左子樹。
注意,由於你的程式正在構建乙個完整的二叉樹(即每個根節點有兩個子節點),如果你想完成左子樹的構建,你需要輸入的 0(構建你的 null 節點)會隨著樹的層數呈指數增長,一旦你輸入了足夠多的非零值, 就算是10,需要輸入的0個數也會在8到16之間,如果你沒有耐心,你當然會認為自己進入了乙個無盡的迴圈。
把 t->lchild=creat(); 更改為 t->data=x; 之前,然後執行,你不要輸入太多非零值,7 就夠了,然後繼續輸入 0,你自己數一數,你想輸入多少個零,看看是不是 2 3。 如果你必須構造乙個完整的二叉樹,你不必改變程式,最多把它改成我上面說的,廣度就會被優先考慮。
廣度優先,你只需要最後一次輸入 0,你不必在最後輸入 0,就像深度先輸入的情況一樣,你不知道什麼時候在最後輸入 0。
請新增詳細說明。
-
搜尋和插入的方法類似於重新建立一維陣列,時間複雜度o(n)會發展成單鏈的形狀,因為深度不知道平衡,它像一條線n點一樣深。
當樹中沒有關鍵字等於搜尋過程中給定值的節點時,將插入二叉排序樹。 如果查詢不成功,則新插入的節點必須是新新增的葉節點,並且是路徑上訪問的最後乙個節點的左節點或右節點。
因此,二叉排序樹插入的最大時間複雜度為 o(n)。 如果二元排序樹更平衡,則時間複雜度和複雜度降低,最小時間複雜度為 o(logn)。
-
1)按照根左和右的順序,沿著路徑上的節點的一定路徑按順序遍歷。在二叉樹中,根後面跟著左邊,然後是右邊。
2)中階遍歷,先遍歷左邊的子樹,然後訪問根節點,最後遍歷右邊的子樹。
3)後序遍歷,可記錄為左根和右根。在二元智慧樹中,先左後右扎根,即先遍歷左邊的子樹,再遍歷右邊的子樹,最後訪問根節點。
4)這個二叉樹的根節點是a。
5)畫一棵二叉樹:
沒有子樹的節點是葉節點。
節點的度數是指節點的子樹個數,二叉樹中沒有度數大於2的節點。 也就是說,每個節點最多可以有兩個子樹。 >>>More
<>第乙個數字作為根節點,將下乙個數字分成大於30和小於30的數字,小數放在左邊,大數放在右邊,然後按照數字出現的順序,乙個接乙個地放在比根節點大的節點上, 小的放在左邊。