以下是交换左右子树的C++代码示例:

#include <iostream>
using namespace std;

struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

void swap(TreeNode* root) {
    if (!root) return;
    TreeNode* tmp = root->left;
    root->left = root->right;
    root->right = tmp;
    swap(root->left);
    swap(root->right);
}

int main() {
    // 构建一棵二叉树
    TreeNode* root = new TreeNode(1);
    root->left = new TreeNode(2);
    root->right = new TreeNode(3);
    root->left->left = new TreeNode(4);
    root->left->right = new TreeNode(5);
    root->right->left = new TreeNode(6);
    root->right->right = new TreeNode(7);

    // 交换左右子树
    swap(root);

    // 输出交换后的二叉树
    cout << root->val << endl;
    cout << root->left->val << " " << root->right->val << endl;
    cout << root->left->left->val << " " << root->left->right->val << " " << root->right->left->val << " " << root->right->right->val << endl;

    return 0;
}

输出结果:

1
3 2
7 6 5 4

可以看到,交换后的二叉树左右子树已经交换了。

交换左右子树cpp

原文地址: https://www.cveoy.top/t/topic/8ok 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录