给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
时间: 2023-04-02 14:02:53 浏览: 77
好的,这个问题我可以回答。可以使用递归的方法,先翻转左子树,再翻转右子树,最后交换左右子树的位置。代码实现如下:
```
struct TreeNode* invertTree(struct TreeNode* root){
if(root == NULL){
return NULL;
}
struct TreeNode* left = invertTree(root->left);
struct TreeNode* right = invertTree(root->right);
root->left = right;
root->right = left;
return root;
}
```
相关问题
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。python
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
if not root:
return None
left = self.invertTree(root.left)
right = self.invertTree(root.right)
root.left, root.right = right, left
return root
使用kotlin解决这个问题:226. 翻转二叉树 简单 1.6K 相关企业 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root = [2,1,3] 输出:[2,3,1] 示例 3: 输入:root = [] 输出:[] 提示: 树中节点数目范围在 [0, 100] 内 -100 <= Node.val <= 100 通过次数 669.4K 提交次数 841.7K 通过率 79.5%
可以使用递归实现二叉树的翻转,具体代码如下:
```kotlin
class TreeNode(var `val`: Int) {
var left: TreeNode? = null
var right: TreeNode? = null
}
fun invertTree(root: TreeNode?): TreeNode? {
if (root == null) {
return null
}
val left = root.left
val right = root.right
root.left = invertTree(right)
root.right = invertTree(left)
return root
}
```
首先判断根节点是否为空,如果为空直接返回null;否则将根节点的左右子树通过递归分别翻转,并交换左右子树的位置,最后返回翻转后的根节点。