树的遍历 | 翻转二叉树
Posted xmxj0707
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树的遍历 | 翻转二叉树相关的知识,希望对你有一定的参考价值。
Invert a binary tree.
Example:
Input:
4
/ 2 7
/ / 1 3 6 9
Output:
4
/ 7 2
/ / 9 6 3 1
思路1 递归:
把左子树和右子树进行交换。交换完之后,再去递归翻转左子树和右子树
class Solution(object):
def invertTree(self, root):
if root:
root.left,root.right = root.right,root.left
self.invertTree(root.left)
self.invertTree(root.right)
return root
思路2 遍历
换父节点的时候,把子节点存下来,然后换完父节点了,就去换子点的。
class Solution(object):
def invertTree(self, root):
node = root
queue = [root]
while len(queue):
root = queue.pop(-1)
if root:
root.left,root.right = root.right,root.left
if root.left:
queue.append(root.left)
if root.right:
queue.append(root.right)
return node
以上是关于树的遍历 | 翻转二叉树的主要内容,如果未能解决你的问题,请参考以下文章