农业银行总行门户网站建设,滨州淘宝网站建设,工业设计网站哪个好用,WordPress验证问题翻转二叉树 题目题解解释 题目
226. 翻转二叉树
给你一棵二叉树的根节点 root #xff0c;翻转这棵二叉树#xff0c;并返回其根节点。 题解
思路#xff1a;递归
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val0, left… 翻转二叉树 题目题解解释 题目
226. 翻转二叉树
给你一棵二叉树的根节点 root 翻转这棵二叉树并返回其根节点。 题解
思路递归
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val0, leftNone, rightNone):
# self.val val
# self.left left
# self.right right
class Solution(object):def invertTree(self, root)::type root: Optional[TreeNode]:rtype: Optional[TreeNode]if not root:returnleft self.invertTree(root.left)right self.invertTree(root.right)root.left, root.right right, leftreturn root解释
假设有一个二叉树如下所示 1/ \2 3/ \
4 5步骤 1: 反转根节点 从根节点 1 开始我们需要交换 1 的左子树和右子树。
左子树是 2右子树是 3所以交换后变成 1/ \3 2/ \4 5步骤 2: 递归反转左右子树 接下来我们递归地对左右子树进行反转。
先对右子树节点 3递归反转。节点 3 没有子树所以直接返回结果是 3。
然后对左子树节点 2递归反转。节点 2 的左子树是 4右子树是 5交换后 2/ \5 4步骤 3: 完整的反转结果 最后返回到根节点继续处理已经反转的子树。最终反转后的二叉树是 1/ \3 2/ \5 4