Я думал об этой проблеме, и я не нашел эффективного и эффективного решения.Как найти зеркальный узел заданного узла (или элемента) в двоичном дереве эффективно
Как найти зеркальный узел заданного узла (или элемента) в двоичном дереве?
// Node definition
struct _Node {
char data;
struct _Node* left;
struct _Node* right;
} Node;
// Assumption:
// "given" is guaranteed in the binary tree ("root" which is not NULL)
Node* FindMirrorNode(Node* root, Node* given)
{
// Implementation here
}
// OR:
// Assumption:
// in the binary tree ("root"), there is no repeated items, which mean in each node the char data is unique;
// The char "given" is guaranteed in the binary tree.
char FindMirrorNodeData(Node* root, char given)
{
// Implementation here
}
Примечание: Я не спрашиваю о том, как найти зеркальное дерево данного дерева :-)
For example, considering the tree below
A
/ \
B C
/ / \
D E F
\ /\
G H I
The mirror node of 'D' is node 'F'; while the mirror node of 'G' is NULL.
Спасибо.
Это может быть глупый вопрос, но не могли бы вы объяснить, что такое зеркальный узел или хотя бы ссылка на его определение? –
Привет, Марк, да, правильно, что это может быть глупый вопрос, но это также может быть хорошей практикой для лучшего понимания двоичного дерева :-) Спасибо. Я добавил примеры определения зеркального узла. –