Skip to content

Instantly share code, notes, and snippets.

@SandeepAggarwal
Created October 9, 2020 15:56
Show Gist options
  • Save SandeepAggarwal/0875c20af29b0f03d7caa21f035b060a to your computer and use it in GitHub Desktop.
Save SandeepAggarwal/0875c20af29b0f03d7caa21f035b060a to your computer and use it in GitHub Desktop.
Insertion in a Binary tree
import UIKit
import PlaygroundSupport
class TreeNode {
var data: Int
var left: TreeNode?
var right: TreeNode?
init(data: Int) {
self.data = data
}
}
class BinaryTree {
var root: TreeNode
init(root: TreeNode) {
self.root = root
}
/// breadth first traversal
func levelOrderTraversal() -> [Int] {
var result = [Int]()
var queue = [TreeNode?]()
queue.append(root)
while !queue.isEmpty {
guard let node = queue.removeFirst() else { continue }
result.append(node.data)
queue.append(node.left)
queue.append(node.right)
}
return result
}
func insertInLevelOrder(newNode: TreeNode) {
var queue = [TreeNode?]()
queue.append(root)
while !queue.isEmpty {
guard let node = queue.removeFirst() else { continue }
if (node.left != nil) && (node.right != nil) {
queue.append(node.left)
queue.append(node.right)
} else {
if (node.right == nil) {
node.right = newNode
} else {
node.left = newNode
}
return
}
}
}
}
let node10 = TreeNode(data: 10)
let node11 = TreeNode(data: 11)
let node9 = TreeNode(data: 9)
let node7 = TreeNode(data: 7)
let node15 = TreeNode(data: 15)
let node8 = TreeNode(data: 8)
node10.left = node11
node10.right = node9
node11.left = node7
node9.left = node15
node9.right = node8
let tree = BinaryTree(root: node10)
print("levelOrder: ", tree.levelOrderTraversal())
tree.insertInLevelOrder(newNode: TreeNode(data: 12))
print("levelOrder after insertion: ", tree.levelOrderTraversal())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment