码迷,mamicode.com
首页 > 其他好文 > 详细

树的遍历 | 翻转二叉树

时间:2019-02-14 23:58:41      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:树的遍历   二叉树   NPU   遍历   output   return   root   交换   end   

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

树的遍历 | 翻转二叉树

标签:树的遍历   二叉树   NPU   遍历   output   return   root   交换   end   

原文地址:https://www.cnblogs.com/xmxj0707/p/10381201.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!