我一直在考慮這個問題,並且我還沒有找到一個好的,有效的解決方案。如何在二叉樹中找到給定節點(或項目)的鏡像節點高效地
如何查找二叉樹中給定節點(或項目)的鏡像節點?
// 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.
感謝。
這可能是一個愚蠢的問題,但你能解釋一個鏡像節點是什麼或至少鏈接到它的定義? – 2010-07-04 19:23:58
嗨馬克,是的,對,它可能是一個愚蠢的問題,但它也可能是更好地理解二叉樹的好習慣:-)謝謝。我添加了鏡像節點定義的示例。 – 2010-07-04 19:44:55