以二叉链表作为二叉树的存储结构,编写用c++交换二叉树每个结点的左孩子和右孩子的算法
时间: 2023-11-14 14:06:48 浏览: 96
编写算法交换二叉树中所有结点的左右子树.doc
5星 · 资源好评率100%
可以使用递归的方式交换每个节点的左右孩子。具体算法如下:
```
// 二叉树节点的定义
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 交换二叉树每个节点的左右孩子
void swap(TreeNode* root) {
if (root == NULL) {
return;
}
// 交换当前节点的左右孩子
TreeNode* tmp = root->left;
root->left = root->right;
root->right = tmp;
// 递归交换左右子树
swap(root->left);
swap(root->right);
}
```
这样,对于任意一个二叉树,调用 `swap(root)` 即可完成左右孩子的交换。
阅读全文