diff --git a/problems/insert-into-a-binary-search-tree.rb b/problems/insert-into-a-binary-search-tree.rb new file mode 100644 index 0000000..bd40c2e --- /dev/null +++ b/problems/insert-into-a-binary-search-tree.rb @@ -0,0 +1,36 @@ +# Definition for a binary tree node. +# class TreeNode +# attr_accessor :val, :left, :right +# def initialize(val = 0, left = nil, right = nil) +# @val = val +# @left = left +# @right = right +# end +# end +# @param {TreeNode} root +# @param {Integer} val +# @return {TreeNode} +def insert_into_bst(root, val) + new_node = TreeNode.new(val) + if root == nil then + return new_node + end + + node = root + while (val < node.val && node.left != nil) || (val >= node.val && node.right != nil) do + if val < node.val then + node = node.left + else + node = node.right + end + end + + # insert the node + if val < node.val then + node.left = new_node + else + node.right = new_node + end + + return root +end