剑指Offer(十八):二叉树的镜像

搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法、机器学习干货

csdn:https://blog.csdn.net/baidu_31657889/

github:https://github.com/aimi-cn/AILearners

一、引子

这个系列是我在牛客网上刷《剑指Offer》的刷题笔记,旨在提升下自己的算法能力。

查看完整的剑指Offer算法题解析请点击:剑指Offer完整习题解析

二、题目

操作给定的二叉树,将其变换为源二叉树的镜像。

二叉树的镜像定义:

1、思路

先交换根节点的两个子结点之后,我们注意到值为10、6的结点的子结点仍然保持不变,因此我们还需要交换这两个结点的左右子结点。做完这两次交换之后,我们已经遍历完所有的非叶结点。此时变换之后的树刚好就是原始树的镜像。交换示意图如下所示:

所以我们就可以这样,首先交换根节点下面的两个子节点的顺序,做完交换,递归调用左右节点,最终会把整个二叉树都进行镜像变换~

2、编程实现

python2.7

代码实现方案:

# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回镜像树的根节点
def Mirror(self, root):
# write code here
if not root:
return root
else:
root.left,root.right = root.right,root.left
self.Mirror(root.left)
self.Mirror(root.right)
return root

AIMI-CN AI学习交流群【1015286623】 获取更多AI资料

扫码加群:

分享技术,乐享生活:我们的公众号计算机视觉这件小事每周推送“AI”系列资讯类文章,欢迎您的关注!

最新文章

  1. iftop与dstat-一次网站故障分析经历
  2. 关于HTML Table标签的边框问题总结
  3. C#--静态成员的生命周期
  4. debian软件源source.list文件格式说明
  5. PHP安装memcache扩展接口步骤
  6. A C[HDU1570]
  7. 诊断SQLSERVER问题常用的日志
  8. SAP实际成本与物料帐
  9. C#连接数据库的一些鲜为人知的方法
  10. 如何让Hadoop运行得更快一些
  11. 创建Windows类别
  12. 【CSS】圆角阴影边框CSS
  13. 使用setTimeout实现setInterval
  14. 探寻 JavaScript 精度问题
  15. IPTABLES使用总结(内网模拟银行网络)
  16. vue中使用elementUI
  17. MySQL 高可用性—keepalived+mysql双主(有详细步骤和全部配置项解释)
  18. node.js之express中app.use
  19. web.config详解(转载)
  20. 将jquery.qqFace.js表情转换成微信的字符码

热门文章

  1. Java中lambda表达式详解
  2. [USACO07FEB]银牛派对Silver Cow Party
  3. canvas制作表单验证码
  4. C#7.0 新增功能
  5. [leetcode] 105. Construct Binary Tree from Preorder and Inorder Traversal (Medium)
  6. vue使用video.js解决m3u8视频播放格式
  7. 【Android】error: Error retrieving parent for item: No resource found that matches the given name 'Theme.Sherlock.Light.NoActionBar'.
  8. light oj 1011 - Marriage Ceremonies (状态压缩+记忆化搜索)
  9. table 表格 细边框 最简单样式
  10. 佳木斯集训Day8