Bir Değerin Ardılı
Coddy'nin AVL Tree - Veri Yapıları Serisi #10 kursunda ders 16 / 16.
Bir değerin sıralı ardılı (in-order successor), ağaçtaki kendisinden kesinlikle daha büyük olan en küçük değerdir; yani sıralanmış bir listede hemen ardından gelecek olan değerdir. Eğer değer ağaçtaki maksimum değer ise, bir ardılı yoktur.
Bunu hiçbir şeyi sıralamaya gerek kalmadan tek bir geçişte bulabilirsiniz: kökten (root) aşağı doğru ilerleyin ve her ne zaman çok küçük bir değerin sağından geçerseniz, en son sola saptığınız düğümü şu ana kadarki en iyi adayınız olarak kaydedin.
Görev
KolayAğaçta value değerinden kesinlikle büyük olan en küçük değeri, eğer böyle bir değer yoksa -1 döndüren bir successor(tree, value) fonksiyonu yazın.
Kendin dene
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "avltree.h"
#include "solution.h"
int main(void) {
AVLTree* tree = AVLTree_create();
char line1[4096];
fgets(line1, sizeof(line1), stdin);
char* tok = strtok(line1, " \n");
while (tok != NULL) {
AVLTree_insert(tree, atoi(tok));
tok = strtok(NULL, " \n");
}
char line2[256];
fgets(line2, sizeof(line2), stdin);
int p0 = atoi(strtok(line2, " \n"));
int result = successor(tree, p0);
printf("%d\n", result);
return 0;
}
AVL Tree - Veri Yapıları Serisi #10 bölümündeki tüm dersler
3Uygulama Alıştırmaları
K. En Küçük ElemanAralık ToplamıEn Düşük Ortak AtaSeviye Düzenli GezinmeBir Değerin Ardılı