Simmetrik ağac
İki tam ədədlər massiviniz var: açar massivi və onlarla əlaqəli dəyərlər massivi. Bu məlumatlardan istifadə edərək İkili Axtarış Ağacı qurun. Əgər daxil edilən açar cari düyündəki açara bərabərdirsə, həmin açarı sağ alt ağaca əlavə edin.
IsSymmetric metodunu yazın. Bu metod ağacın əlaqəli dəyərlər baxımından özünün güzgü əksi olub-olmadığını (yəni mərkəzə nisbətən simmetrik olub-olmadığını) yoxlayacaq.
Aşağıdakı interfeysə uyğun kod yazın:
// C / C++ class TreeNode { public: int key; int val; TreeNode *left, *right; TreeNode(int key, int val) : key(key), val(val), left(NULL), right(NULL) {} }; class Tree { public: TreeNode *head; Tree() : head(NULL) {}; void Insert(int key, int val); // İkili Axtarış Ağacına düyün daxil edilməsi int IsSymmetric(void); // Əlaqəli dəyərlərdən ağac simmetrikdirsə 1 qaytar və əks halda 0 qaytar };
// Java class TreeNode { int key, val; TreeNode left, right; TreeNode(int key, int val) { this.key = key; this.val = val; left = right = null; } } class Tree { TreeNode head; Tree(); void Insert(int key, int val); // İkili Axtarış Ağacına düyün daxil edilməsi int isSymmetric(); // Əlaqəli dəyərlərdən ağac simmetrikdirsə 1 qaytar və əks halda 0 qaytar }
Lazım olduqda əlavə metodlar yarada və ya istifadə edə bilərsiniz.
Giriş məlumatları
Birinci sətir n (1 ≤ n ≤ 100) ədədini ehtiva edir. İkinci sətir n tam ədədləri - açarlar: key[1], key[2], ..., key[n]
. Üçüncü sətir n tam ədədləri - əlaqəli dəyərlər val[1], val[2], ..., val[n]
. val[i]
dəyərləri key[i]
açarı ilə əlaqəlidir.
Çıxış məlumatları
Giriş məlumatlarından İkili Axtarış Ağacı yaradın. Əlaqəli dəyərlərdən ağac simmetrikdirsə 1, əks halda 0 çıxarın.