写得有点粗糙凑合着看吧。
import Foundation
struct Data{
var data:String=""
init (p_data:String){
data=p_data
}
func getData(){
println(data)
}
}
class Tree {
var data:Data
var parentNode:Tree?
var childNode:[Tree?]=[nil]
var level:Int=0
init (p_data:Data){
data=p_data
}
func append(p_str:String)->Tree?{
var t:Tree?=Tree(p_data: Data(p_data: p_str))
childNode.append(t)
t!.parentNode=self
t!.level=t!.level+level+1
return t
}
func getParentNode()->Tree?{
if parentNode===nil{
println("Object is empty.")
}else{
return parentNode
}
return nil
}
func getNextNode()->[Tree?]{
if childNode.isEmpty{
println("Object is empty.")
}else{
return childNode
}
return [nil]
}
}
func Repeat(p_count: Int,p_reStr:String,p_sourctStr:String)->String{
var str:String=""
if p_count==0 {
return p_sourctStr
}
for i in 0...p_count {
str=p_reStr+str
}
return str+p_sourctStr
}
func getAllNode(p_rootNode:Tree?){
if p_rootNode != nil {
println(Repeat(p_rootNode!.level," ","")+"|"+Repeat(p_rootNode!.level,"-",p_rootNode!.data.data))
for v in p_rootNode!.childNode{
if v? != nil {
getAllNode(v!)
}
}
}
}
var root=Tree(p_data: Data(p_data: "Ⓐ"))
for v in 1...2{
var node=root.append("1."+String(v))
for v2 in 1...3{
var node2=node!.append("2."+String(v2))
}
}
var node=root.append("Ⓑ")
for v in 1...2{
var node2=node!.append("1."+String(v))
for v3 in 1...3{
var node3=node2!.append("2."+String(v3))
}
}
getAllNode(root)
输出:
|Ⓐ
|--1.1
|---2.1
|---2.2
|---2.3
|--1.2
|---2.1
|---2.2
|---2.3
|--Ⓑ
|---1.1
|----2.1
|----2.2
|----2.3
|---1.2
|----2.1
|----2.2
|----2.3
Program ended with exit code: 0