ผลต่างระหว่างรุ่นของ "Psl/binary search trees"
ไปยังการนำทาง
ไปยังการค้นหา
Jittat (คุย | มีส่วนร่วม) (หน้าที่ถูกสร้างด้วย 'ในส่วนนี้เราจะหัดใช้โครงสร้างข้อมูลแบบ binary search tree ...') |
Jittat (คุย | มีส่วนร่วม) |
||
แถว 17: | แถว 17: | ||
}; | }; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | == การเพิ่มข้อมูลใน bst (ไม่ balanced) == | ||
+ | |||
+ | <syntaxhighlight lang="cpp"> | ||
+ | void insert(Node*& root, int x) | ||
+ | { | ||
+ | if(root == 0) { | ||
+ | root = new Node(x); | ||
+ | return; | ||
+ | } | ||
+ | if(x > root->val) | ||
+ | insert(root->right, x); | ||
+ | else if(x < root->val) | ||
+ | insert(root->left, x); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Balanced bst == |
รุ่นแก้ไขเมื่อ 02:17, 9 กุมภาพันธ์ 2558
ในส่วนนี้เราจะหัดใช้โครงสร้างข้อมูลแบบ binary search tree
ส่วนพื้นฐานของโครงสร้างข้อมูลดังกล่าวคือ tree node ซึ่งจะประกอบด้วยที่สำหรับเก็บข้อมูลและ pointer สองอันที่ชี้ไปยังโหนดลูกด้านซ้ายและด้านขวา นิยามได้ดังนี้
struct Node {
int val;
Node* left;
Node* right;
Node(int v, Node* l=0, Node* r=0)
: val(v), left(l), right(r)
{}
};
การเพิ่มข้อมูลใน bst (ไม่ balanced)
void insert(Node*& root, int x)
{
if(root == 0) {
root = new Node(x);
return;
}
if(x > root->val)
insert(root->right, x);
else if(x < root->val)
insert(root->left, x);
}