给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。python
时间: 2024-01-23 11:01:45 浏览: 156
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
相关问题
给你一棵二叉树的根节点 root,翻转这棵二叉树,并返回其根节点。
好的,以下是翻转二叉树的 Python 代码实现:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def invert_tree(root):
if not root:
return None
# 交换左右子树
root.left, root.right = root.right, root.left
# 递归翻转左右子树
invert_tree(root.left)
invert_tree(root.right)
return root
```
这段代码首先定义了一个二叉树节点的类 `TreeNode`,包含节点的值 `val`、左子节点 `left` 和右子节点 `right`。然后定义了一个函数 `invert_tree`,接受一个二叉树的根节点 `root` 作为参数,返回翻转后的二叉树的根节点。
在函数中,首先判断根节点是否为空,如果为空则直接返回 `None`。否则,交换根节点的左右子树,即 `root.left` 和 `root.right` 的位置。然后递归地翻转左右子树,即调用 `invert_tree(root.left)` 和 `invert_tree(root.right)`。最后返回翻转后的根节点 `root`。
需要注意的是,这里的二叉树是一个非平衡的二叉树,如果要翻转的是平衡的二叉树(例如每个节点的左子树深度等于右子树深度),那么可以直接对原二叉树进行中序遍历即可翻转整个二叉树。但是这个算法通常在二叉树可能不平衡的情况下使用,因为平衡的二叉树在遍历时可能存在一些特殊情况,需要额外的处理。
翻转二叉树 python
翻转二叉树是一个常见的编程问题,它要求将给定的二叉树中的所有节点的左子节点和右子节点交换位置。在Python中,可以通过递归的方式来实现这个操作。下面是一个简单的示例代码,展示了如何在Python中翻转一个二叉树:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def invertTree(root):
if root:
# 交换左右子节点
root.left, root.right = root.right, root.left
# 递归翻转左子树和右子树
invertTree(root.left)
invertTree(root.right)
return root
# 使用示例
# 创建一个简单的二叉树
# 1
# / \
# 2 3
# / \ / \
# 4 5 6 7
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
root.right.left = TreeNode(6)
root.right.right = TreeNode(7)
# 翻转这棵树
invertTree(root)
# 翻转后的树结构
# 1
# / \
# 3 2
# / \ / \
# 7 6 5 4
```
阅读全文