Симметричное дерево
Симметричное дерево
Заданы два массива целых чисел: массив ключей и массив ассоциированных с ними значений. Создайте из них Бинарное Дерево Поиска. Если вставляемый ключ равен ключу в текущей вершине, то его следует вставлять в правое поддерево.
Реализуйте метод IsSymmetric, который определит, является ли дерево из ассоциированных значений зеркальным отображением самого себя (то есть симметричным относительно центра).
Напишите код согласно следующего интерфейса:
// 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); // Вставка вершины в Бинарное Дерево Поиска
int IsSymmetric(void); // Вернуть 1 если дерево из ассоциированных значений симметрично и 0 в противном случае
};
// 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); // Вставка вершины в Бинарное Дерево Поиска
int isSymmetric(); // Вернуть 1 если дерево из ассоциированных значений симметрично и 0 в противном случае
}
Вы можете создавать (использовать) по необходимости дополнительные методы.
Giriş verilənləri
Первая строка содержит число n (1 ≤ n ≤ 100). Вторая строка содержит n целых чисел - ключи: key[1], key[2], ..., key[n]
. Третья строка содержит n целых чисел - ассоциированные значения val[1], val[2], ..., val[n]
. Значения val[i]
ассоциированы с ключом key[i]
.
Çıxış verilənləri
Создайте Бинарное Дерево Поиска из входных данных. Выведите 1 если дерево из ассоциированных значений симметрично и 0 в противном случае.
Nümunə
7 10 5 1 15 20 7 12 4 5 6 5 6 1 1
1