利用二叉链表存储结构,交换二叉树中每个结点的左孩子和右孩子的c++代码
时间: 2023-11-14 21:04:35 浏览: 68
下面是交换二叉树中每个结点的左孩子和右孩子的C++代码:
```c++
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void swapTree(TreeNode* root) {
if (root == NULL) {
return;
}
TreeNode* temp = root->left;
root->left = root->right;
root->right = temp;
swapTree(root->left);
swapTree(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);
swapTree(root);
return 0;
}
```
这里我们利用递归的方式遍历整棵二叉树,每次交换当前节点的左右孩子即可。注意交换的时候需要使用一个临时指针来存储左孩子,否则直接交换会导致左孩子丢失。
阅读全文