ืื ืฉืื ืจืืื ืื ืจืื ื ืืกื ืืืฆืื ืืื ื ืขืฆืื ืืืื, ืืื ืื ืืข ืืืืคืืฉ ืืฆื ืจืง ืืื ืืจืืื... ืขืฅ ืืืคืืฉ ืืื ืืจื, ืืขืืจ ืขืฆืื ืืื ืืจื ืืขืื ืืืืืจืืชืืื ืจืืื ืืืจืื.
ืื, ืืื, ืืขืฅ ืืืืื ืืื ื ืืฉืืืืฉ ืืฉืื ืืงืื, ืืืขืืจ ืืืื, ืืงืจื ืืฉืืืืฉ ืงืื ืื.
ืื, ืฉืืืชื ืืช ืขืฆืื ืืช ืืฉืืื ืืื ืืขืืฉืื ืืกืืืจ ืืื ืืขืฅ ืื ืื. ืืื, ืืืืคื ืืืืืืื, ืืื ื ืขืฅ ืืืื ืฆืจืื ืืืืกื ืฉืืืฉื ืืฉืชื ืื:
- ืืฆืืืข ืืื ืืืืืจ
- ืืฆืืืข ืืื
- ืื ืชืื ืื ืฉืืชื ืืืื ืืืืกื
struct Tnode {
int key;
struct Tnode *son;
struct Tnode *brother;
};
typedef struct Tnode Node;
ืืืื ื ืืจืื ืขื ืืฆืืืข ืืงืืืงืื:
Node *tree = NULL;
ืขืืื ื ืืืกืืื ืืจืืฉ ืืืฆื ืืืืื ืงืืืงืืืื; ืื ืื ืขืฅ ืืื ืืจื, ืืืื ืงืืืงืื ืืืืืื ืืืืืช ืืื ืืืืื ืฉืชืจืฆื.
- + 2 (ืื +ssbb 2) - ืืื ืกื ืืขืฅ (ืขืืืจ ืขืฅ ืืืื, ืื ืชืื ื ืืชื ืขื ืืื ืืงื, ืืืฉืจ r ืืื ืืฆืืจืช ืฉืืจืฉ, s ืืื ืืขืืจ ืืื ืืืืืจ, b ืืื ืืขืืจ ืื ืื);
ืื ื ืืชื ืืืืื:
+r 1
+ 2
+ 3
+ 3
+s 5
+sb 6
+sb 7
ืืชืืฆืื ืชืืื ืขืฅ ืืื:
1
2
5
3
6
7
3
ืจืืฉืืช, ืืืื ื ืืฆืืจ ืคืื ืงืฆืื ืฉืืืกืืคื ืงืืืงืื, ืืืืืจ ืืงืฆื ืืืืจืื ืืงืืืงืื ืืืขืืืจื ืืฆืืืข ืืงืืืงืื ืืื (ืืืชืืื ืื ืืืืืจ ืืืืื).
Node *create_tree(int v) {
Node *Tree = (Node *) malloc(sizeof(Node));
Tree->key = v;
//ะพะฑะฝัะปัะตะผ ัะบะฐะทะฐัะตะปะธ ะบ ะฑัะฐัััะผ ะธ ััะฝะพะฒััะผ, ะฝะตะทะฐะฒะธัะธะผะฐั ะฒะตััะธะฝะฐ, ะบะพัะพัะฐั ั
ัะฐะฝะธั value
Tree->son = NULL;
Tree->brother = NULL;
return Tree;
}
ืืชื ืฆืจืื ืื ืืืฆืืจ ืคืื ืงืฆืื ืฉืืืคืืช ืืืืจืืืช ืื ืชืื (+bs...). ืืื ืคืขื ืฉืื ืื ื ืืชืืืืื ืืช ืืืขืืจ ืืืฉืืจืฉ, ืื ืืื ืื ื ืืฆืจ, ืื ื ืืฆืื NULL (ืื ืื ื ืื ืืืืืื ืืขืฉืืช ืืืื). ืื ืืื ืงืืืงืื, ืื ืขืืื ื ืืืฆืืจ ืืืชื. ืื ืื ื ืืืืืื ืืคืื ืงืฆืืืช create tree ืืืงืืืื ืืฆืืืข ืืฉืืจืฉ.
ืฉืื ืื ืฉืขืฅ Node** ืขืืืจ ืืช ืืืื ื, ืื ืืขืชืืง ืืืชื. ืื ื ืืชื ืื ื ืืช ืืืืืืช ืืฉื ืืช ืืืจืื ืฉืื ืื ื ืื ืืืืืื ืืขืฉืืช ืขื ืืฆืืจืช ื-Node *ืขืฅ.
ืืืืคื ืืืื, ืขืืื ื ืืืฆืื ืืฆืืืข ืืงืืืงืื ืฉืืืื ืื ื ืฆืจืืืื ืืืืกืืฃ ืืช ืืื:
Node* add_node(Node **tree, const char *a) {
Node* t = *tree;
int value;
scanf("%d", &value);
int i = 0;
while (a[++i] != ' ') {
if (a[i] == 'r') {
*tree = create_tree(value); // ัะพะทะดะฐะตะผ ะบะพัะตะฝั
t = *tree;
return *tree;
}
if (a[i] == 's') {
if (t = to_son(t)) // ััะฝะบัะธั, ะบะพัะพัะฐั ะฒะพะทะฒัะฐัะฐะตั ัะบะฐะทะฐัะตะปั ะฝะฐ ััะฝะฐ
continue;
return NULL; //ะธะฝะฐัะต NULL
}
if (a[i] == 'b') {
if (t = to_brother(t)) //ะฒะพะทะฒัะฐัะฐะตั ัะบะฐะทะฐัะตะปั ะฝะฐ ะฑัะฐัะฐ t
continue;
return NULL;
}
}
if (t->son != NULL) {
t = last_son(t); // ะผั ะฟะตัะตัะปะธ ะบ ะฒะตััะธะฝะต, ะบ ะบะพัะพัะพะน ั
ะพัะตะปะธ
//ะธ ัะตะฟะตัั ะธะดะตะผ ะบ ะฟะพัะปะตะดะฝะตะผั ะตะต ััะฝั,
//ััะพะฑั ะดะพะฑะฐะฒะธัั ะฒ ะบะพะฝะตั ัะฟะธัะบะฐ
t->brother = create_tree(value);
return t->brother;
}
else {//ะตัะปะธ ััะฝะฐ ะฝะตั, ัะพ ัะพะทะดะฐะดะธะผ ะตะณะพ
t->son = create_tree(value);
return t->son;
}
}
ืื ืืื ืื ืขืฅ.
ื .ื. ืื ืืืืืจ ืืจืืฉืื ืฉืื, ืื ืืืงืฉื ืื ืชืฉืคืื ืืืืืจื
ืืงืืจ: www.habr.com