美文网首页
swift后序创建二叉树

swift后序创建二叉树

作者: 前年的邂逅_Jerry | 来源:发表于2019-10-30 15:38 被阅读0次

如后序遍历得到如下字符串:##H##ID##EB###JF##GCA
对应二叉树如图一所示:


图一.jpeg
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
//        var arr = Array(String("ABDH##I##E##CF#J##G##")) //先序
//        var arr = Array(String("#H#D#I#B#E#A#F#J#C#G#A"))
        //后期
        let arr = Array(String("##H##ID##EB###JF##GCA"))
        test.index = arr.count - 1
        let list = NodeList()
        list.root = list.createPostBT(arr)
        
        print(list.preOder(list.root))
    }
}

struct test {
    static var index : Int = 0
}
class Node{
    var val : Character
    var left : Node?
    var right : Node?
    init(_ val : Character) {
        self.val = val
        self.left = nil
        self.right = nil
    }
}
class NodeList {
    var root : Node?
    func createPostBT(_ arr : [Character]) -> Node?{
        let val = arr[test.index]
        test.index -= 1
        var node : Node? = nil
        if val != "#"{
            node = Node(val)
            node?.right = createPostBT(arr)
            node?.left = createPostBT(arr)
        }
        return node
    }
    func preOder(_ node : Node?) -> [Character]{
        var res = [Character]()
        preOrderHelper(node, arr: &res)
        return res
    }
    func preOrderHelper(_ node : Node?,arr : inout [Character]) {
        if let node = node{
            arr.append(node.val)
            preOrderHelper(node.left,arr :&arr)
            preOrderHelper(node.right,arr :&arr)
        }
    }
    
}

打印结果:

["A", "B", "D", "H", "I", "E", "C", "F", "J", "G"]

相关文章

  • swift后序创建二叉树

    如后序遍历得到如下字符串:##H##ID##EB###JF##GCA对应二叉树如图一所示: 打印结果:

  • leecode刷题(30)-- 二叉树的后序遍历

    leecode刷题(30)-- 二叉树的后序遍历 二叉树的后序遍历 给定一个二叉树,返回它的 后序 遍历。 示例:...

  • 树的简单算法题

    二叉树插入 有序数组创建二叉树 遍历二叉树 algorithms/ 前序 根左右 中序 左根右 后序 左右根 递归...

  • 二叉树的基本操作

    一、基本内容 二叉树的创建(先顺遍历的方法) 二叉树的先序遍历 二叉树的中序遍历 二叉树的后序遍历 哈夫曼树的创建...

  • 二叉树 基础操作

    二叉树的使用 二叉树结构 先序创建二叉树 DFS 先序遍历二叉树 中序遍历二叉树 后序遍历二叉树 BFS 层次遍历...

  • 二叉树操作

    1、定义二叉树 2、创建二叉树 3、计算二叉树的深度 4、计算二叉树的节点 5、前序遍历 6、中序遍历 7、后序遍...

  • 数据结构与算法12-树与二叉树

    二叉树的链式存储 前序、中序、后序,区别可记忆为,访问自身节点的时机,从前往后。 定义类型 创建二叉树 销毁二叉树...

  • 算法之二叉树

    二叉树之C++实现 创建二叉树 复制二叉树 先序遍历 递归实现 非递归实现 中序遍历 递归实现 非递归实现 后序遍...

  • GO学习笔记(6) - 二叉树构建与遍历

    目录 二叉树介绍 广度优先遍历创建二叉树广度遍历 深度优先遍历先、中、后序遍历利用函数编程得到节点总数利用chan...

  • 三个树构造算法

    已知先序和后序构造正则二叉树 已知先序和中序构造二叉树 已知中序和后序构造二叉树

网友评论

      本文标题:swift后序创建二叉树

      本文链接:https://www.haomeiwen.com/subject/alnovctx.html