题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5
交换左右节点,遍历左节点,右节点,求镜像
class TreeNode:
def __init__(self,item):
self.val=item
self.left=None
self.right=None
class Solution:
def mirror(self,root):
if root:
root.left,root.right=root.right,root.left
if root.left:
self.mirror(root.left)
if root.right:
self.mirror(root.right)
return root
②
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def mirrorTree(self, root: TreeNode) -> TreeNode:
if not root:
return None
root.left,root.right=root.right,root.left
self.mirrorTree(root.left)
self.mirrorTree(root.right)
return root
复杂度分析
时间复杂度:O(N),其中 NN 为二叉树节点的数目。我们会遍历二叉树中的每一个节点,对每个节点而言,我们在常数时间内交换其两棵子树。
空间复杂度:O(N)。使用的空间由递归栈的深度决定,它等于当前节点在二叉树中的高度。在平均情况下,二叉树的高度与节点个数为对数关系,即 O(\log N)。而在最坏情况下,树形成链状,空间复杂度为 O(N)