#10416. szjy_6_树_036

szjy_6_树_036

szjy_6_树_036

函数 mirror 交换每个结点的左右子树。执行后,程序输出是( )。

#include <iostream>
#include <utility>
using namespace std;

struct Node {
int value;
Node* left = nullptr;
Node* right = nullptr;
};

void mirror(Node* root) {
if (root == nullptr) return;
swap(root->left, root->right);
mirror(root->left);
mirror(root->right);
}

void preorder(Node* root) {
if (root == nullptr) return;
cout << root->value << ' ';
preorder(root->left);
preorder(root->right);
}

int main() {
Node a{1}, b{2}, c{3}, d{4}, e{5};
a.left = &b;  a.right = &c;
b.left = &d;
c.right = &e;
mirror(&a);
preorder(&a);
}

{{ select(1) }}

  • 1 2 4 3 5
  • 5 3 1 2 4
  • 1 3 2 5 4
  • 1 3 5 2 4