二叉搜尋樹又名二叉排序樹。
大概簡略的思維導圖如下,方便記憶特性
基本二叉搜尋樹建立過程如下
/*資料結構如下*/
typedef
struct tree
tree,
*treenode;
/*node 為二叉樹根節點,insert為插入的節點*/
void
create_tree
(treenode *node, tree *insert)
else
}else
else
}}
查詢某一數值是否存在的過程如下:
bool search
(tree *node,
int val)
if(node -> data > val)
else
}else
else
}}
測試**如下:
#include
#include
#include
#include
#include
#include
using namespace std;
typedef
struct tree
tree,
*treenode;
void
create_tree
(treenode *node, tree *insert)
else
}else
else}}
void
preorder
(tree *node,
int layer)
for(
int i =
0;i < layer;
++i)
cout << node -> data << endl;
preorder
(node -> left,layer +1)
;preorder
(node -> right, layer +1)
;}bool search
(tree *node,
int val)
if(node -> data > val)
else
}else
else}}
intmain
(int argc,
char
const
*ar**)
cout <<
"preorder"
<< endl;
preorder
(root,0)
; string s =
(search
(root,10)
==1)?
"success"
:"failed"
; cout <<
"\nsearch 10 in tree "
<< s << endl;
return0;
}
輸出如下:
#輸入
53 1 19 2 9
#輸出preorder
8----3
--------1
------------2
----19
--------9
search 10 in tree failed
#輸入5
3 1 10 2 9
#輸出
preorder
8----3
--------1
------------2
----10
--------9
search 10 in tree success
二叉樹 還原二叉樹 二叉搜尋樹
先序遍歷的特點 先遍歷根結點,再遍歷左子樹,最後再遍歷右子樹 中序遍歷的特點 先遍歷左子樹,再遍歷根結點,最後再遍歷右子樹 後序遍歷的特點 先遍歷左子樹,再遍歷右子樹,最後再遍歷根結點 舉例 先序遍歷 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 若右子樹不空,則右子...