แž‘แžทแžŠแŸ’แž‹แž—แžถแž–แž‘แžผแž‘แŸ…แž“แŸƒแžŠแžพแž˜แžˆแžพ แž€แžถแžšแžขแž“แžปแžœแžแŸ’แž แž“แžทแž„แž…แŸ’แžšแžพแž“แž‘แŸ€แž

แž˜แž“แžปแžŸแŸ’แžŸแž‡แžถแž…แŸ’แžšแžพแž“แž”แŸ’แžšแž แŸ‚แž›แž‡แžถแž–แŸ’แž™แžถแž™แžถแž˜แžŸแŸ’แžœแŸ‚แž„แžšแž€แžŸแŸ†แžŽแž„แŸ‹แžŠแžพแž˜แžˆแžพแž‘แžผแž‘แŸ… แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž˜แŸ‰แžถแžŸแŸŠแžธแž“แžŸแŸ’แžœแŸ‚แž„แžšแž€แž”แžถแž“แžšแž€แžƒแžพแž‰แžแŸ‚แž”แŸ’แžšแž—แŸแž‘แž‚แŸ„แž›แž–แžธแžš... แž˜แŸ‚แž€แž’แžถแž„แžŸแŸ’แžœแŸ‚แž„แžšแž€แž‚แŸ„แž›แž–แžธแžš แž€แžถแžšแž†แŸ’แž›แž„แž€แžถแžแŸ‹แžŠแžพแž˜แžˆแžพแž‚แŸ„แž›แž–แžธแžš แž“แžทแž„แž€แŸ’แž”แžฝแž“แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž‡แžถแž…แŸ’แžšแžพแž“แž‘แŸ€แžแŸ”
แž”แžถแž‘ แž–แžทแžแž แžพแž™ แžŠแžพแž˜แžˆแžพแž‘แžผแž‘แŸ…แž˜แžทแž“แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžพแž“แŸ…แž€แž“แŸ’แž›แŸ‚แž„แžŽแžถแž‘แŸ แž†แŸ’แž›แž„แž€แžถแžแŸ‹แž™แžบแž แž€แžšแžŽแžธแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž‚แžบแžแžผแž…แŸ”

แžŠแžผแž…แŸ’แž“แŸแŸ‡ แžแŸ’แž‰แžปแŸ†โ€‹แž”แžถแž“โ€‹แžŸแžฝแžšโ€‹แžแŸ’แž›แžฝแž“โ€‹แžฏแž„โ€‹แž“แžผแžœโ€‹แžŸแŸ†แžŽแžฝแžšโ€‹แž“แŸแŸ‡ แž แžพแž™โ€‹แžฅแžกแžผแžœโ€‹แž“แŸแŸ‡โ€‹แžแŸ’แž‰แžปแŸ†โ€‹แž“แžนแž„โ€‹แž–แž“แŸ’แž™แž›แŸ‹โ€‹แž–แžธโ€‹แžšแž”แŸ€แž”โ€‹แžŠแŸ‚แž›โ€‹แžŠแžพแž˜โ€‹แžˆแžพโ€‹แžแŸ’แžšแžผแžœโ€‹แž”แžถแž“โ€‹แž‚แŸโ€‹แžŸแžถแž„แžŸแž„แŸ‹แŸ” แžŠแžผแž…แŸ’แž“แŸแŸ‡แžแžถแž˜แžงแžแŸ’แžŠแž˜แž‚แžแžท แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แž˜แŸ‚แž€แž’แžถแž„แž‘แžผแž‘แŸ…แž‚แžฝแžšแžแŸ‚แžšแž€แŸ’แžŸแžถแž‘แžปแž€แžขแžแŸแžšแž”แžธแŸ–

  • แž…แž„แŸ’แžขแžปแž›แž‘แŸ…แž€แžผแž“แž”แŸ’แžšแžปแžŸแž…แŸ’แž”แž„
  • แž…แž„แŸ’แžขแžปแž›แž‘แŸ…แž”แž„แž”แŸ’แžšแžปแžŸ
  • แž‘แžทแž“แŸ’แž“แž“แŸแž™แžŠแŸ‚แž›แžขแŸ’แž“แž€แž“แžนแž„แžšแž€แŸ’แžŸแžถแž‘แžปแž€

struct Tnode {
    int key;
    struct Tnode *son;
    struct Tnode *brother;
};
typedef struct Tnode Node;

แž…แžผแžšโ€‹แž”แŸ’แžšแž€แžถแžŸโ€‹แž‘แŸ’แžšแž“แžทแž…โ€‹แž‘แŸ…โ€‹แž…แŸ†แžŽแžปแž…โ€‹แž€แŸ†แž–แžผแž›แŸ–

Node *tree = NULL;

แž™แžพแž„แžแŸ’แžšแžผแžœแžแŸ‚แž™แž›แŸ‹แžŸแŸ’แžšแž”แž‡แžถแž˜แžปแž“แž–แžธแžšแž”แŸ€แž”แžŠแžพแž˜แŸ’แž”แžธแž…แžผแž›แž‘แŸ…แž€แŸ’แž“แžปแž„แž€แŸ†แž–แžผแž›;

  • + 2 (แžฌ +ssbb 2) - แž€แžถแžšแž”แž‰แŸ’แž…แžผแž›แž‘แŸ…แž€แŸ’แž“แžปแž„แžŠแžพแž˜แžˆแžพ (แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŠแžพแž˜แžˆแžพแž‘แžผแž‘แŸ… แž•แŸ’แž›แžผแžœแžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แžแž›แŸ‹แžฑแŸ’แž™แžŠแŸ„แž™แž”แž“แŸ’แž‘แžถแžแŸ‹แžŠแŸ‚แž› r แž‚แžบแž‡แžถแž€แžถแžšแž”แž„แŸ’แž€แžพแžแžซแžŸแž˜แžฝแž™ s แž‚แžบแž‡แžถแž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž‘แŸ…แž€แžผแž“แž”แŸ’แžšแžปแžŸแž…แŸ’แž”แž„ แžแž‚แžบแž‡แžถแž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž‘แŸ… แž”แž„แž”แŸ’แžšแžปแžŸ);

แžแŸ’แž‰แžปแŸ†แžŸแžผแž˜แž•แŸ’แžแž›แŸ‹แžงแž‘แžถแž แžšแžŽแŸแž˜แžฝแž™แžŠแž›แŸ‹แžขแŸ’แž“แž€แŸ–

+r 1
+ 2
+ 3
+ 3
+s 5
+sb 6
+sb 7

แž›แž‘แŸ’แž’แž•แž›แž“แžนแž„แž‡แžถแžŠแžพแž˜แžˆแžพแžŠแžผแž…แž“แŸแŸ‡แŸ–

1
  2
    5
  3
    6
    7
  3

แž‡แžถแžŠแŸ†แž”แžผแž„ แž…แžผแžšแž™แžพแž„แž”แž„แŸ’แž€แžพแžแž˜แžปแžแž„แžถแžšแžŠแŸ‚แž›แž”แž“แŸ’แžแŸ‚แž˜ vertex แž˜แžฝแž™ แž–แŸ„แž›แž‚แžบ แž”แŸ‚แž„แž…แŸ‚แž€แžขแž„แŸ’แž‚แž…แž„แž…แžถแŸ†แžŸแž˜แŸ’แžšแžถแž”แŸ‹ vertex แž แžพแž™แž”แž‰แŸ’แž‡แžผแž“แž‘แŸ’แžšแž“แžทแž…แž‘แŸ…แž…แŸ†แž“แžปแž…แž€แŸ†แž–แžผแž›แž“แŸแŸ‡ (แžŠแŸ†แž”แžผแž„แž˜แžทแž“แž—แŸ’แž‡แžถแž”แŸ‹แž‘แŸ…แžขแŸ’แžœแžธแž‘แžถแŸ†แž„แžขแžŸแŸ‹)แŸ”

Node *create_tree(int v) {
  Node *Tree = (Node *) malloc(sizeof(Node));
  Tree->key = v;
  //ะพะฑะฝัƒะปัะตะผ ัƒะบะฐะทะฐั‚ะตะปะธ ะบ ะฑั€ะฐั‚ัŒัะผ ะธ ัั‹ะฝะพะฒัŒัะผ, ะฝะตะทะฐะฒะธัะธะผะฐั ะฒะตั€ัˆะธะฝะฐ, ะบะพั‚ะพั€ะฐั ั…ั€ะฐะฝะธั‚ value
  Tree->son = NULL;
  Tree->brother = NULL;
  return Tree;
}

แžขแŸ’แž“แž€แž€แŸแžแŸ’แžšแžผแžœแž”แž„แŸ’แž€แžพแžแž˜แžปแžแž„แžถแžšแžŠแŸ‚แž›แž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แžแŸ’แžŸแŸ‚แžขแž€แŸ’แžŸแžšแž•แŸ’แž›แžผแžœ (+bs...) แŸ” แžšแžถแž›แŸ‹แž–แŸแž›แžŠแŸ‚แž›แž™แžพแž„แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แž†แŸ’แž›แž„แž€แžถแžแŸ‹แž–แžธ root แž”แŸ’แžšแžŸแžทแž“แž”แžพแžœแžถแž˜แžทแž“แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž„แŸ’แž€แžพแžแž‘แŸแž“แŸ„แŸ‡แž™แžพแž„แž”แž‰แŸ’แž…แŸแž‰ NULL (แž™แžพแž„แž˜แžทแž“แžขแžถแž…แž’แŸ’แžœแžพแžขแŸ’แžœแžธแž”แžถแž“แž‘แŸ) แŸ” แž”แŸ’แžšแžŸแžทแž“แž”แžพแž‚แŸ’แž˜แžถแž“แž…แŸ†แž“แžปแž…แž€แŸ†แž–แžผแž›แž‘แŸแž“แŸ„แŸ‡ แž™แžพแž„แžแŸ’แžšแžผแžœแž”แž„แŸ’แž€แžพแžแžœแžถแŸ” แž™แžพแž„แž…แžผแž›แž‘แŸ…แž€แžถแž“แŸ‹แž˜แžปแžแž„แžถแžšแž”แž„แŸ’แž€แžพแžแž˜แŸ‚แž€แž’แžถแž„ แž แžพแž™แž™แž€แž‘แŸ’แžšแž“แžทแž…แž‘แŸ…แžซแžŸแŸ”

แž…แŸ†แžŽแžถแŸ†แžแžถ Node ** แž˜แŸ‚แž€แž’แžถแž„แž€แŸ†แž–แžปแž„แž†แŸ’แž›แž„แž€แžถแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ แž˜แžทแž“แž˜แŸ‚แž“แž…แž˜แŸ’แž›แž„แžœแžถแž‘แŸแŸ” แžœแžถแž•แŸ’แžแž›แŸ‹แžฑแŸ’แž™แž™แžพแž„แž“แžผแžœแžŸแž˜แžแŸ’แžแž—แžถแž–แž€แŸ’แž“แžปแž„แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแžขแŸ’แžœแžธแžŠแŸ‚แž›แž™แžพแž„แž˜แžทแž“แžขแžถแž…แž’แŸ’แžœแžพแž”แžถแž“แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž”แŸ’แžšแž€แžถแžŸ Node *tree แŸ”

แž‡แžถแž‘แžผแž‘แŸ… แž™แžพแž„แžแŸ’แžšแžผแžœแžŸแŸ’แžœแŸ‚แž„แžšแž€แž…แž„แŸ’แžขแžปแž›แž‘แŸ…แž…แŸ†แž“แžปแž…แž€แŸ†แž–แžผแž› แžŠแŸ‚แž›แž™แžพแž„แžแŸ’แžšแžผแžœแž”แž“แŸ’แžแŸ‚แž˜แž€แžผแž“แž”แŸ’แžšแžปแžŸแŸ–

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;
    }
}

แž“แŸแŸ‡แž‡แžถแžšแž”แŸ€แž”แžŠแŸ‚แž›แž™แžพแž„แžŸแžถแž„แžŸแž„แŸ‹แžŠแžพแž˜แžˆแžพแŸ”

PS แž“แŸแŸ‡แž‡แžถแžขแžแŸ’แžแž”แž‘แžŠแŸ†แž”แžผแž„แžšแž”แžŸแŸ‹แžแŸ’แž‰แžปแŸ† แžŠแžผแž…แŸ’แž“แŸแŸ‡แžŸแžผแž˜แž€แžปแŸ†แžœแžทแž“แžทแž…แŸ’แž†แŸแž™แžแŸ’แž›แžถแŸ†แž„แž–แŸแž€

แž”แŸ’แžšแž—แž–: www.habr.com

แž‘แžทแž‰แž€แžถแžšแž”แž„แŸ’แž แŸ„แŸ‡แžŠแŸ‚แž›แžขแžถแž…แž‘แžปแž€แž…แžทแžแŸ’แžแž”แžถแž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‚แŸแž แž‘แŸ†แž–แŸแžšแžŠแŸ‚แž›แž˜แžถแž“แž€แžถแžšแž€แžถแžšแž–แžถแžš DDoS, แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸ VPS VDS ๐Ÿ”ฅ แž‘แžทแž‰แžŸแŸแžœแžถแž”แž„แŸ’แž แŸ„แŸ‡แž‚แŸแž แž‘แŸ†แž–แŸแžšแžŠแŸ‚แž›แžขแžถแž…แž‘แžปแž€แž…แžทแžแŸ’แžแž”แžถแž“แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž€แžถแžšแž–แžถแžš DDoS แž“แžทแž„แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸ VPS VDS | ProHoster