首页 > 其他 > 详细

二叉树的镜像

时间:2020-08-27 18:31:20      阅读:64      评论:0      收藏:0      [点我收藏+]

请完成一个函数,输入一个二叉树,该函数输出它的镜像。

 输入:root = [4,2,7,1,3,6,9]  输出:[4,7,2,9,6,3,1]

 

递归法:根据二叉树镜像的定义,考虑递归遍历二叉树,交换每个节点的左 / 右子节点,即可生成二叉树的镜像。终止条件:节点 root 为空时(即越过叶节点),则返回 null

class Solution(object):
    def mirrorTree(self, root):
        """
        :type root: TreeNode
        :rtype: TreeNode
        """
        if not root : return 
        tmp = root.left
        root.left = self.mirrorTree(root.right)
        root.right  = self.mirrorTree(tmp)
        return root

 

栈的方法:利用栈(或队列)遍历树的所有节点 nodenode ,并交换每个 nodenode 的左 / 右子节点。

算法流程:
特例处理: 当 root 为空时,直接返回 null ;
初始化: 栈(或队列),本文用栈,并加入根节点 root 。
循环交换: 当栈 stack为空时跳出;
出栈: 记为 node ;
添加子节点: 将 node左和右子节点入栈;
交换: 交换 node的左 / 右子节点。
返回值: 返回根节点 root

class Solution(object):
    def mirrorTree(self, root):
        """
        :type root: TreeNode
        :rtype: TreeNode
        """
        if not root: return 
        stack = [root]
        while stack:
            node = stack.pop()
            if node.left:stack.append(node.left)
            if node.right:stack.append(node.right)
            node.left,node.right = node.right,node.left
        return root

 

  • 添加到短语集
     
    • 没有此单词集:英语 -> 中文(简体)...
       
    • 创建新的单词集...
  • 拷贝

二叉树的镜像

原文:https://www.cnblogs.com/minidu/p/13572584.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!