交换左右子树cpp
以下是交换左右子树的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
可以看到,交换后的二叉树左右子树已经交换了。
原文地址: https://www.cveoy.top/t/topic/8ok 著作权归作者所有。请勿转载和采集!