从零开始学swift(五)-算法之利用栈实现二叉树遍历

本文介绍如何使用Swift实现栈,并基于此完成二叉树的前序、中序及后序遍历。文章详细展示了遍历算法的具体实现过程,并通过Swift与Objective-C混合编程实现了控制台输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你能用swift写出栈并利用其实现二叉树的遍历,我可以负责任地说,再学一些iOS基础,开发一款本地的简单app是绰绰有余了。不过你们想想,谁没事用swift实现这个遍历呢,诶下个月考托福,还要准备建模,我还有好多作业,先停更一个月,一个月足够让你从什么都不会到了解swift了。

开始正题,如何用swift实现stack,在苹果官网上面有,源码是这样滴

struct Stack<T> {
    var items = [T]()
    mutating func push(item: T) {
        items.append(item)
    }
    mutating func pop() -> T {
        return items.removeLast()
    }
}

还是比较简洁易懂的

接着我们在Stack里面写一个方法isEmpty()用来判断是否为空

    mutating func isEmpty()->Bool{
        if(items.isEmpty) {return true}
        else {return false}
    }

下面我们来借助之前的两节算法内容,利用栈实现二叉树三种遍历。

我们建树的方法跟之前基本一样,

func createTree(i:Int, n:Int)->UnsafeMutablePointer<Tree>?{//又有问号
    var p : UnsafeMutablePointer<Tree>?//又有问号
    if (i >= n) {return nil}
    p = UnsafeMutablePointer<Tree>.alloc(sizeof(Tree))
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值