二叉树的镜像

简介:

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


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


    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,如需转载请自行联系原作者
相关文章
GPT-4 vs. ChatGPT:19个弱项问题(多步逻辑推理、概念间接关联)的横向对比
GPT-4在逻辑推理和概念关联上的准确率提升至100%,超越ChatGPT,其智力可能超过95%的人。在逻辑和多模态理解上有显著进步,但数数和某些逻辑推理仍是挑战。擅长处理成本计算和复杂情境,能建立概念间的间接关联,如遗忘与老龄化的联系。在数学和物理领域表现出色,但处理复杂间接关系和抽象概念时仍有局限。总体而言,GPT-4展现出超越人类智能的潜力,但仍需面对认知任务的挑战。![GPT-4进步示意](https://developer.aliyun.com/profile/oesouji3mdrog/highScore_1?spm=a2c6h.132)查看GPT-5教程,可访问我的个人主页介绍。
332 0
GPT-4 vs. ChatGPT:19个弱项问题(多步逻辑推理、概念间接关联)的横向对比
|
10月前
|
安全 编译器 Swift
Swift开发
Swift开发
268 9
|
9月前
|
编解码 固态存储 openCL
Mastercam 2025 官方电脑配置推荐
Mastercam 推荐配置:建议使用最新版 Windows Professional;推荐 Intel i7 处理器,至少 8GB 内存(建议 32GB),NVIDIA RTX 或 AMD FirePro™/Radeon Pro 专业显卡(4GB 以上内存);双显示器设置,主显示器分辨率 1920x1080;使用 SSD 作为主驱动器;可选 3D 鼠标提升操作体验;注意杀毒软件可能影响软件运行。
1043 7
|
11月前
|
存储 NoSQL 算法
全链路营销|基于事件驱动的流程编排系统
本文主要介绍了 AE 策略中心的技术方案选型与落地实战。
|
12月前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
455 7
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
存储 Java Maven
SpringBoot整合Jest和Elasticsearch实践
SpringBoot整合Jest和Elasticsearch实践
418 1
|
NoSQL IDE 开发工具
OPENJTAG调试学习(一):嵌入式软件的交叉开发系统
OPENJTAG调试学习(一):嵌入式软件的交叉开发系统
500 0
|
人工智能 自然语言处理 安全
无影上新,AI助手晓颖来了!
无影上新,AI助手晓颖来了!
594 2
|
监控 安全 网络性能优化
|
消息中间件 Java API
Flowable 7.0.0 release
Flowable 7.0.0 release
428 1