题目-简单难度
给你一棵二叉树的根节点 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
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/summary-ranges
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1. dfs
时间
44ms
击败 58.46%使用 Python3 的用户
内存
15.68mb
击败 62.91%使用 Python3 的用户
# Definition for a binary tree node.
# 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: Optional[TreeNode]) -> Optional[TreeNode]:
# 如果当前节点为空,返回None
if not root: return None
# 交换
root.left, root.right = self.invertTree(root.right),self.invertTree(root.left)
return root
2. bfs
时间
40ms
击败 80.10%使用 Python3 的用户
内存
15.77mb
击败 30.39%使用 Python3 的用户
# Definition for a binary tree node.
# 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: Optional[TreeNode]) -> Optional[TreeNode]:
# 根节点为空, 返回空
if not root: return None
# 列表放入根节点
li = [root]
# 列表不为空,遍历
while li:
# 每层遍历
for _ in range(len(li)):
# 获取节点
a = li.pop(0)
# 为下次遍历添加子节点
# 将左节点添加到列表
if a.left:
li.append(a.left)
# 将右节点添加到列表
if a. right:
li.append(a.right)
# 交换当前节点下左右节点
a.left, a.right = a.right, a.left
return root