交换二叉树中每个结点的左孩子和右孩子 生成C语言代码
时间: 2023-11-14 21:05:11 浏览: 38
生成交换二叉树中每个结点的左孩子和右孩子的C语言代码如下:
```
struct TreeNode* invertTree(struct TreeNode* root) {
if(root == NULL){
return NULL;
}
struct TreeNode* temp = root->left;
root->left = invertTree(root->right);
root->right = invertTree(temp);
return root;
}
```
这是一个递归算法,首先判断根节点是否为空,如果为空直接返回。接着用一个变量temp保存左孩子的值,将左孩子指向右孩子的递归调用,右孩子指向左孩子的递归调用,最后返回根节点。
相关问题
交换二叉树中每个结点的左孩子和右孩子 c语言
要交换二叉树中每个节点的左孩子和右孩子,可以通过递归方法来实现。首先,需要定义一个二叉树的结构体,包括节点值和左右孩子指针。然后,使用递归函数来遍历每个节点,并在遍历到每个节点时,交换其左右孩子指针。
以下是一个简单的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 交换二叉树中每个节点的左右孩子
void swapChildren(TreeNode *root) {
if (root == NULL) {
return;
}
// 交换左右孩子指针
TreeNode *temp = root->left;
root->left = root->right;
root->right = temp;
// 递归处理左右子树
swapChildren(root->left);
swapChildren(root->right);
}
// 打印二叉树(中序遍历)
void printTree(TreeNode *root) {
if (root == NULL) {
return;
}
printTree(root->left);
printf("%d ", root->val);
printTree(root->right);
}
int main() {
// 构建一个简单的二叉树
TreeNode *root = (TreeNode *)malloc(sizeof(TreeNode));
root->val = 1;
root->left = (TreeNode *)malloc(sizeof(TreeNode));
root->left->val = 2;
root->right = (TreeNode *)malloc(sizeof(TreeNode));
root->right->val = 3;
// 交换每个节点的左右孩子
swapChildren(root);
// 打印交换后的二叉树
printTree(root);
return 0;
}
```
以上代码定义了一个简单的二叉树结构体和交换左右孩子指针的函数。在main函数中,构建了一个简单的二叉树,并交换了每个节点的左右孩子指针,然后通过中序遍历的方式打印出交换后的二叉树。
交换二叉树中每个结点的左孩子和右孩子 生成代码
您好,以下是交换二叉树中每个结点的左孩子和右孩子的生成代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
if root:
root.left, root.right = self.invertTree(root.right), self.invertTree(root.left)
return root
```
这段代码使用了递归来实现,对于每个结点,先交换左右子树,再递归交换左右子树的左右子树。最后返回交换后的整棵树。