الحصول على الارتفاع
الدرس 5 من 16 في دورة شجرة AVL - سلسلة هياكل البيانات #10 على Coddy.
أضف طريقة getHeight إلى AVLTree تقرأ الارتفاع المخزن للعقدة. الحيلة الوحيدة هي حالة الـ null: الشجرة الفرعية الفارغة غير موجودة، لذا فمن المتعارف عليه أن ارتفاعها هو 0، أي أقل بواحد من ارتفاع الورقة الحقيقية البالغ 1.
توجيه كل عملية بحث عن الارتفاع من خلال هذه الطريقة الواحدة (بدلاً من قراءة node.height مباشرة في كل مكان) يعني أن التحقق من الـ null يجب كتابته مرة واحدة فقط.
التحدي
مبتدئاكتب طريقة getHeight(node) في AVLTree تُرجع 0 إذا كان node هو null، وإلا تُرجع node.height.
جرّب بنفسك
#include <stdio.h>
#include <string.h>
#include "avltree.h"
int main(void) {
AVLTree* tree = AVLTree_create();
char line[256];
while (fgets(line, sizeof(line), stdin) != NULL) {
line[strcspn(line, "\r\n")] = '\0';
if (strcmp(line, "null") == 0) {
printf("%d\n", AVLTree_getHeight(tree, NULL));
}
if (strcmp(line, "null") != 0) {
int h;
sscanf(line, "%d", &h);
Node* n = Node_create(0);
n->height = h;
printf("%d\n", AVLTree_getHeight(tree, n));
}
}
return 0;
}
جميع دروس شجرة AVL - سلسلة هياكل البيانات #10
2مشروع AVL Tree
فئة Nodeفئة AVLTree