写得有点粗糙凑合着看吧。
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