树的遍历 | 翻转二叉树

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

以上是关于树的遍历 | 翻转二叉树的主要内容,如果未能解决你的问题,请参考以下文章

树的遍历 | 翻转二叉树

二叉树练习题

二叉树练习题

LeetCode与《代码随想录》二叉树篇:做题笔记与总结-JavaScript版

讲透学烂二叉树:二叉树的笔试题:翻转|宽度|深度

二叉树小结