class BinaryTreeNote{
var value:String
var leftChild:BinaryTreeNote?
var rightChild:BinaryTreeNote?
init(_ value:String) {
self.value = value
}
}
class BinaryTreeHelper{
var array:[String]
var index = -1
init(_ array:[String]) {
self.array = array
}
//创建二叉树
func createTree() -> BinaryTreeNote? {
self.index = self.index + 1
if index < self.array.count && index >= 0 {
let value = self.array[index]
if value == "" {
return nil
} else {
let note = BinaryTreeNote(value)
note.leftChild = createTree()
note.rightChild = createTree()
return note
}
}
return nil;
}
//先序遍历二叉树
func preOrderTraverse(_ note:BinaryTreeNote?){
if note == nil {
print("#")
return
}
print(note!.value)
preOrderTraverse(note!.leftChild)
preOrderTraverse(note!.rightChild)
}
//中序遍历二叉树
func inOrderTraverse (_ note: BinaryTreeNote?) {
if note == nil {
print("#")
return
}
inOrderTraverse(note!.leftChild)
print(note!.value)
inOrderTraverse(note!.rightChild)
}
//后序遍历二叉树
func afterOrderTraverse (_ note: BinaryTreeNote?) {
if note == nil {
print("#")
return
}
afterOrderTraverse(note!.leftChild)
afterOrderTraverse(note!.rightChild)
print(note!.value)
}
//层次遍历二叉树
func levelOrder(_ root: BinaryTreeNote?){
var result = [[BinaryTreeNote]]()
var level = [BinaryTreeNote]()
level.append(root!)
while level.count != 0 {
result.append(level)
var nextLevel = [BinaryTreeNote]()
for node in level {
if let leftNode = node.leftChild {
nextLevel.append(leftNode)
}
if let rightNode = node.rightChild {
nextLevel.append(rightNode)
}
}
level = nextLevel
}
let ans = result.map { $0.map { $0.value }}
print(ans)
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有