二叉樹 二叉搜尋樹的編碼和解碼

2021-09-29 17:03:07 字數 1298 閱讀 8928

二叉搜尋樹的編碼和解碼描述:

編碼:即將乙個二叉搜尋樹編碼,節點數值轉換為字串

解碼:即將乙個字串解碼,數值轉換為對應的二叉搜尋樹的節點

過程導圖如下:

針對性編碼實現如下:

/*數字轉字串*/

void

change_num_to_string

(int val, string &tmp)

for(

int i = buf.

length()

-1;i >=

0; i--

) tmp +

='#';}

/*先序遍歷,進行編碼,最終結果放入buf中*/

void

code_tree

(tree *node, string &buf)

string s;

change_num_to_string

(node -> data, s)

; buf.

(s);

code_tree

(node -> left, buf)

;code_tree

(node -> right, buf)

;}

編碼之後的string buf內容類似8#3#2#1#9#20#針對編碼的string buf進行解碼實現如下:

/*建立二叉搜尋樹*/

void

create_tree

(treenode *node, tree *insert)

else

}else

else}}

/*解碼*/

treenode *

decode_tree

(string s)

else

}/*建立二叉樹*/

for(

int i =

1;i < node_arr.

size()

;++i)

return

&node_arr[0]

;}

最終解碼輸出為乙個完整的二叉樹

8

----3--

------2

----

----

----1--

--9----

----

20

二叉樹 還原二叉樹 二叉搜尋樹

先序遍歷的特點 先遍歷根結點,再遍歷左子樹,最後再遍歷右子樹 中序遍歷的特點 先遍歷左子樹,再遍歷根結點,最後再遍歷右子樹 後序遍歷的特點 先遍歷左子樹,再遍歷右子樹,最後再遍歷根結點 舉例 先序遍歷 a b d f g h i e c 中序遍歷 f d h g i b e a c 如上,根據先序遍...

樹 二叉樹 二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...