假设有一棵树:
1 / \ 2 3 / \ 4 5
然后镜像将是:
1 / \ 3 2 / \ 5 4
假设节点具有以下结构:
struct node{ node left; node right; int value; }
有人可以为此建议一种算法吗?
听起来像功课。
看起来很简单。编写一个递归例程,该例程首先深度访问每个节点,并以左右反转的方式构建镜像树。
struct node *mirror(struct node *here) { if (here == NULL) return NULL; else { struct node *newNode = malloc (sizeof(struct node)); newNode->value = here->value; newNode->left = mirror(here->right); newNode->right = mirror(here->left); return newNode; } }
这将返回一棵新树-其他一些答案就位。取决于您的作业要求您做的事情:)