給定乙個二叉查詢樹,實現對該二叉查詢樹編碼與解碼功能。編碼即將該二叉樹轉為字串,解碼即將字串轉為二叉查詢樹。不限制使用何種編碼演算法,只需保證當對二叉查詢樹呼叫編碼功能後可再呼叫解碼功能將其復原。
#include
#include
#include
struct treenode;}
;void
preorder
(treenode* node,
int layer)
for(
int i =
0; i < layer; i++
)printf
("[%d]\n"
, node-
>val)
;preorder
(node-
>left, layer +1)
;preorder
(node-
>right, layer +1)
;}class
codec
~codec()
std::string serialize
(treenode* root)
treenode*
deserialize
(std::string data)
std::vector> node_vec;
int val =0;
for(
int i =
0; i < data.
length()
; i++
)else
}for
(int i =
1; i < node_vec.
size()
; i++
)return node_vec[0]
;}private
:void
change_int_to_string
(int val, std::string& str_val)
for(
int i = tmp.
length()
-1; i >=
0; i--
) str_val +
='#';}
void
bst_preorder
(treenode* node, std::string& data)
std::string str_val;
change_int_to_string
(node-
>val, str_val)
; data +
= str_val;
bst_preorder
(node-
>left, data)
;bst_preorder
(node-
>right, data);}
void
bst_insert
(treenode* node, treenode* insert_node)
else
}else
else}}
};intmain()
執行結果為:
8#3#1#6#10#15#[8
]-----
[3]--
----
----[1
]------
----[6
]-----
[10]--
----
----[15
]
二叉樹 二叉搜尋樹的編碼和解碼
二叉搜尋樹的編碼和解碼描述 編碼 即將乙個二叉搜尋樹編碼,節點數值轉換為字串 解碼 即將乙個字串解碼,數值轉換為對應的二叉搜尋樹的節點 過程導圖如下 針對性編碼實現如下 數字轉字串 void change num to string int val,string tmp for int i buf....
二叉查詢樹 C
include stdafx.h include using namespace std 二叉查詢樹的性質 1.二叉排序樹或為空樹 2.若左子樹不為空,則左子樹中所有節點的值均小於或等於根節點 3.若右子樹不為空,則右子樹中所有節點的值均大於或等於跟節點 4.左右子樹也為二叉排序樹 5.二叉排序樹採...
C 二叉查詢樹
二叉排序樹 binary sort tree 又稱二叉查詢樹 binary search tree 亦稱二叉搜尋樹。二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子樹上所有結點的值均大於或等於它的根結點...