#include<stdio.h>#include<stdlib.h>#include<stdbool.h>// global variables & constants#define NEXT 2// represent a treetypedefstruct node
{int number;struct node* next[NEXT];// [0] for left subtree and [1] for the one on right} node;// functions prototypes
node* allocate_node(int number);
node* find_parent(node* tree,int number);bool check(node* tree,int number);int main(void){// tree: the root of tree - n: to allocate new memory for nodes
node* tree = NULL;
node* n = NULL;// array to insertconstint SIZE =7;constint numbers[SIZE]={5,7,2,6,8,2,4};// insert items automaticallyfor(int i =0; i < SIZE; i++){
n = allocate_node(numbers[i]);// n is the root if tree emptyif(!tree){
tree = n;}else{// temp holds the address of the right parent of n
node* temp = find_parent(tree, numbers[i]);// insert right or leftif(numbers[i]> temp->number){
temp->next[1]= n;}else{
temp->next[0]= n;}}}// try checking xint x =50;
printf("%sFound\n", check(tree, x)?"":"Not ");// well done!return1;}// func1: allocating new memory
node* allocate_node(int number){
node*new= NULL;new= malloc(sizeof(node));if(!new){
exit(0);}new->number = number;for(int i =0; i < NEXT; i++){new->next[i]= NULL;}returnnew;}// func2: find the parent of a node
node* find_parent(node* tree,int number){if(!tree){return NULL;}
node* temp = tree;while(temp->next[0]|| temp->next[1]){if(number >(temp->number)){if(temp->next[1]){
temp = temp->next[1];continue;}return temp;}else{if(temp->next[0]){
temp = temp->next[0];continue;}return temp;}}return temp;}// func3: search in BSTbool check(node* tree,int number){// iterative for goes through the treefor(node* temp = tree; temp;){// found?if(number == temp->number){// yeah :)returntrue;}// go right if target greater than temp->numberelseif(number >(temp->number)){
temp = temp->next[1];continue;}// go left if not
temp = temp->next[0];}// not found :(returnfalse;}
كلا دالتي البحث و إيجاد الأب للعقد الجديدة متشابهين لحد كبير. هل يمكن بطريقة أو بأخري تقليل عدد أسطر الكود. أو بمعني اَخر, هل يمكن تخزين الأسطر المتشابهة بين الدالتين في مكان ما ثم أستدعاء تلك الأسطر في كلا الدالتين أو شيئ من هذا القبيل.
السؤال
Abdelrehman Elsied
السلام عليكم.
في الكود التالي:
كلا دالتي البحث و إيجاد الأب للعقد الجديدة متشابهين لحد كبير. هل يمكن بطريقة أو بأخري تقليل عدد أسطر الكود. أو بمعني اَخر, هل يمكن تخزين الأسطر المتشابهة بين الدالتين في مكان ما ثم أستدعاء تلك الأسطر في كلا الدالتين أو شيئ من هذا القبيل.
0 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.