C/C++实现一个反转二叉树的算法
时间: 2024-10-20 19:11:29 浏览: 21
在C/C++中,我们可以使用递归的方式很自然地实现一个反转二叉树的算法。以下是简单的步骤和伪代码示例:
```cpp
// 定义二叉树节点结构
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 反转二叉树的递归函数
TreeNode* invertTree(TreeNode* root) {
// 如果根节点为空,直接返回
if (root == NULL)
return NULL;
// 交换当前节点与其子节点的左右位置
TreeNode* temp = root->left;
root->left = root->right;
root->right = temp;
// 递归反转左子树和右子树
TreeNode* left = invertTree(root->left);
TreeNode* right = invertTree(root->right);
// 返回新的根节点
return left ? left : root; // 优先返回非空子树,保证结构完整
}
```
这个函数首先检查根节点是否为空,然后通过交换左右指针将当前节点反转,接着递归地对左右子树做同样的操作。最后,如果左子树非空,则返回左子树作为新的根,反之则返回当前节点作为新的根,这样就完成了整个二叉树的反转。
阅读全文