如果你能用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))