请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 4 / 2 7 / \ / 1 3 6 9 镜像输出: 4 / 7 2 / \ / 9 6 3 1 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这个题目比较简单,思路就是依次遍历二叉树的各个节点并交换左右子树。这里复习一下遍历二叉树的三种思路:递归、栈(先序遍历)、队列(层次遍历)
递归
class Solution:
def mirrorTree(self
, root
: TreeNode
) -> TreeNode
:
if not root
:
return root
root
.left
,root
.right
=self
.mirrorTree
(root
.right
),self
.mirrorTree
(root
.left
)
return root
辅助栈
class Solution:
def mirrorTree(self
, root
: TreeNode
) -> TreeNode
:
if not root
:
return root
s
=[root
]
while len(s
):
t
=s
.pop
()
if t
.left
:
s
.append
(t
.left
)
if t
.right
:
s
.append
(t
.right
)
t
.left
,t
.right
=t
.right
,t
.left
return root
队列
class Solution:
def mirrorTree(self
, root
: TreeNode
) -> TreeNode
:
if not root
:
return root
s
=[root
]
while len(s
):
t
=s
.pop
()
if t
.left
:
s
.insert
(0,t
.left
)
if t
.right
:
s
.insert
(0,t
.right
)
t
.left
,t
.right
=t
.right
,t
.left
return root