Swift-反转二叉树

题目: 反转二叉树其实就是二叉树的镜像.
4
/
2 7
/ \ /
1 3 6 9
to
4
/
7 2
/ \ /
9 6 3 1

核心代码:
<pre><code>` func invertTree(rootNode:TreeNode?) {

    if rootNode == nil || (rootNode?.leftChild == nil && rootNode?.rightChild == nil) {
        return
    }
    
    let root:TreeNode = rootNode!
    
    swap(&root.leftChild, &root.rightChild)
    
    if root.leftChild != nil {
        invertTree(rootNode: root.leftChild)
    }
    
    if root.rightChild != nil {
        invertTree(rootNode: root.rightChild)
    }
    
}`</code></pre>

测试代码:
<pre><code>`var invertNode:TreeNode?
var invertListData:[String] = ["4","2","1","#","#","3","#","#","7","6","#","#","9","#","#"]
tree.rootIndex = -1
tree.createTreeByPreOrder(root: &invertNode, listData: invertListData)

tree.treeLevelOrder(root: invertNode)
binaryTree.invertTree(rootNode: invertNode)
tree.treeLevelOrder(root: invertNode)
print("FlyElephant")`</code></pre>

FlyElephant.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 链表 链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,...
    Mr希灵阅读 10,937评论 1 17
  • 一直以来,我都很少使用也避免使用到树和图,总觉得它们神秘而又复杂,但是树在一些运算和查找中也不可避免的要使用到,那...
    24K男阅读 11,707评论 5 14
  • 面试题7:重建二叉树 题目: 输入某二叉树的前序遍历和中序遍历的结果。请重建该二叉树。假设输入的前序遍历和中序遍历...
    lyoungzzz阅读 3,619评论 0 0
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 9,934评论 1 31
  • 梦里的雨很重 你瘦弱的身影 撑着伞 穿过雨幕重重 梦里的雨来去都很急 你耳畔起舞 温柔的风 无法触摸你的美丽 我多...
    何清soul阅读 747评论 0 1