二叉树的镜像

简介:

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


    解题过程:先前序遍历树的每个结点,如果遍历到结点有子结点,交换它的两个子结点。当交换完所有非叶子结点的左右子结点之后,就得到了树的镜像。


    C#实现方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#region 二叉树的镜像
         /// 请完成一个函数,输入一个二叉树,该函数输出它的镜像
         public  static  void  MirrorRecursively(BinaryTreeNode pNode)
         {
             if  ((pNode ==  null ) || (pNode.left ==  null  && pNode.right ==  null ))
                 return ;
 
             BinaryTreeNode pTemp = pNode.left;
             pNode.left = pNode.right;
             pNode.right = pTemp;
 
             if  (pNode.left !=  null )
                 MirrorRecursively(pNode.left);
             if  (pNode.right !=  null )
                 MirrorRecursively(pNode.right);
         }
         #endregion

    Java实现方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
      * 二叉树的镜像
      * 请完成一个函数,输入一个二叉树,该函数输出它的镜像
      * @param pNode
      */
     public  static  void  mirrorRecursively(BinaryTreeNode pNode) {
         if  ((pNode ==  null ) || (pNode.left ==  null  && pNode.right ==  null ))
             return ;
 
         BinaryTreeNode pTemp = pNode.left;
         pNode.left = pNode.right;
         pNode.right = pTemp;
 
         if  (pNode.left !=  null )
             mirrorRecursively(pNode.left);
         if  (pNode.right !=  null )
             mirrorRecursively(pNode.right);
     }

    Python实现方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@staticmethod
     def  mirrorRecursively(pNode):
         """
         二叉树的镜像
         请完成一个函数,输入一个二叉树,该函数输出它的镜像
         :param pNode: 
         :return: 
         """
         if  (pNode  = =  None or  (pNode.left  = =  None  and  pNode.right  = =  None ):
             return
         
         pTemp  =  pNode.left
         pNode.left  =  pNode.right
         pNode.right  =  pTemp
         
         if  pNode.left ! =  None :
             BinaryTree.mirrorRecursively(pNode.left)
         if  pNode.right ! =  None :
             BinaryTree.mirrorRecursively(pNode.right)


本文转自 许大树 51CTO博客,原文链接:http://blog.51cto.com/abelxu/1972899,如需转载请自行联系原作者
相关文章
【剑指offer】-二叉树的镜像-18/67
【剑指offer】-二叉树的镜像-18/67
|
5月前
牛客网-二叉树的镜像
牛客网-二叉树的镜像
22 0
|
29天前
|
存储 Linux 应用服务中间件
安装docker 并搭建出一颗爱心树
Docker是Go语言编写的开源容器运行时软件,遵循Apache2.0协议,提供应用封装和跨平台运行能力,灵感来自集装箱。主要组件包括镜像(静态模板)、容器(运行时实例)和仓库(镜像存储库)。最大公开仓库是Docker Hub,国内有阿里、网易等公开仓库。在Redhat 9环境下,安装Docker涉及配置阿里云仓库、安装yum-utils、添加仓库、安装Docker软件包、设置镜像加速、拉取Nginx镜像并创建运行容器,实现端口映射和持久化存储。
31 1
安装docker 并搭建出一颗爱心树
|
8月前
|
C++
二叉树的中后序遍历构建及求叶子
二叉树的中后序遍历构建及求叶子
105 0
|
9月前
|
C++
构建二叉树
构建二叉树
42 0
构建二叉树
|
11月前
剑指offer 26. 二叉树的镜像
剑指offer 26. 二叉树的镜像
25 0
|
11月前
剑指offer_二叉树---二叉树的镜像
剑指offer_二叉树---二叉树的镜像
33 0
|
前端开发 程序员 开发者
二叉树的镜像
二叉树的镜像
二叉树的镜像
二叉树的镜像(简单难度)
二叉树的镜像(简单难度)
48 0
二叉树的镜像(简单难度)
|
存储 算法 C++