<p>You are given the <code>root</code> node of a binary search tree (BST) and a <code>value</code> to insert into the tree. Return <em>the root node of the BST after the insertion</em>. It is <strong>guaranteed</strong> that the new value does not exist in the original BST.</p> <p><strong>Notice</strong> that there may exist multiple valid ways for the insertion, as long as the tree remains a BST after insertion. You can return <strong>any of them</strong>.</p> <p> </p> <p><strong>Example 1:</strong></p> <img alt="" src="https://assets.leetcode.com/uploads/2020/10/05/insertbst.jpg" style="width: 752px; height: 221px;" /> <pre> <strong>Input:</strong> root = [4,2,7,1,3], val = 5 <strong>Output:</strong> [4,2,7,1,3,5] <strong>Explanation:</strong> Another accepted tree is: <img alt="" src="https://assets.leetcode.com/uploads/2020/10/05/bst.jpg" style="width: 352px; height: 301px;" /> </pre> <p><strong>Example 2:</strong></p> <pre> <strong>Input:</strong> root = [40,20,60,10,30,50,70], val = 25 <strong>Output:</strong> [40,20,60,10,30,50,70,null,null,25] </pre> <p><strong>Example 3:</strong></p> <pre> <strong>Input:</strong> root = [4,2,7,1,3,null,null,null,null,null,null], val = 5 <strong>Output:</strong> [4,2,7,1,3,5] </pre> <p> </p> <p><strong>Constraints:</strong></p> <ul> <li>The number of nodes in the tree will be in the range <code>[0, 10<sup>4</sup>]</code>.</li> <li><code>-10<sup>8</sup> <= Node.val <= 10<sup>8</sup></code></li> <li>All the values <code>Node.val</code> are <strong>unique</strong>.</li> <li><code>-10<sup>8</sup> <= val <= 10<sup>8</sup></code></li> <li>It's <strong>guaranteed</strong> that <code>val</code> does not exist in the original BST.</li> </ul>