二叉搜尋樹的編碼和解碼描述:
編碼:即將乙個二叉搜尋樹編碼,節點數值轉換為字串
解碼:即將乙個字串解碼,數值轉換為對應的二叉搜尋樹的節點
過程導圖如下:
針對性編碼實現如下:
/*數字轉字串*/
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 若右子樹不空,則右子...