交换二叉树每个结点的左孩子和右孩子算法思路,文字描述+代码
时间: 2023-11-14 16:05:45 浏览: 35
交换二叉树每个结点的左孩子和右孩子的算法思路如下:
1. 如果当前节点为空,返回。
2. 如果当前节点有左孩子和右孩子,交换它们。
3. 递归交换当前节点的左孩子和右孩子。
4. 递归交换当前节点的左子树和右子树。
代码实现如下(假设二叉树节点类型为Node):
```
void swapTree(Node* root) {
if (!root) {
return;
}
// 交换当前节点的左孩子和右孩子
Node* temp = root->left;
root->left = root->right;
root->right = temp;
// 递归交换左右孩子
swapTree(root->left);
swapTree(root->right);
}
```
使用方法:
假设有一棵名为root的二叉树,调用swapTree函数即可交换它的左右孩子:
```
swapTree(root);
```