请用swift语言代码实现二叉树
时间: 2023-11-21 14:06:35 浏览: 82
以下是用 Swift 语言实现二叉树的代码:
class TreeNode {
var value: Int
var left: TreeNode?
var right: TreeNode?
init(_ value: Int) {
self.value = value
self.left = nil
self.right = nil
}
}
class BinaryTree {
var root: TreeNode?
init() {
self.root = nil
}
func insert(_ value: Int) {
let newNode = TreeNode(value)
if root == nil {
root = newNode
} else {
insertNode(root!, newNode)
}
}
private func insertNode(_ node: TreeNode, _ newNode: TreeNode) {
if newNode.value < node.value {
if node.left == nil {
node.left = newNode
} else {
insertNode(node.left!, newNode)
}
} else {
if node.right == nil {
node.right = newNode
} else {
insertNode(node.right!, newNode)
}
}
}
func traverseInOrder() {
traverseInOrder(root)
}
private func traverseInOrder(_ node: TreeNode?) {
if node != nil {
traverseInOrder(node!.left)
print(node!.value)
traverseInOrder(node!.right)
}
}
}
// 示例使用
let tree = BinaryTree()
tree.insert(5)
tree.insert(3)
tree.insert(7)
tree.insert(1)
tree.insert(9)
tree.traverseInOrder()
以上代码中,TreeNode
类表示二叉树的节点,包括节点值 value
、左子节点 left
和右子节点 right
。BinaryTree
类表示二叉树,包括根节点 root
和一些方法,如 insert
方法用于插入节点,traverseInOrder
方法用于中序遍历二叉树。在示例中,我们创建一个二叉树并插入一些节点,最后进行中序遍历并输出结果。
相关推荐















