二叉树的镜像
问题内容:
假设有一棵树:
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;
}
}
这将返回一棵新树-其他一些答案就位。取决于您的作业要求您做的事情:)