Add some binary trees tasks

This commit is contained in:
pro100ton 2025-02-23 20:11:58 +03:00
parent 3bad2db0f1
commit df21a31267
6 changed files with 110 additions and 0 deletions

View file

@ -0,0 +1,30 @@
You are given the root node of a binary search tree (BST) and a value to insert into the tree. Return the root node of the BST after the insertion. It is guaranteed that the new value does not exist in the original BST.
Notice that there may exist multiple valid ways for the insertion, as long as the tree remains a BST after insertion. You can return any of them.
Example 1:
Input: root = [4,2,7,1,3], val = 5
Output: [4,2,7,1,3,5]
Explanation: Another accepted tree is:
Example 2:
Input: root = [40,20,60,10,30,50,70], val = 25
Output: [40,20,60,10,30,50,70,null,null,25]
Example 3:
Input: root = [4,2,7,1,3,null,null,null,null,null,null], val = 5
Output: [4,2,7,1,3,5]
Constraints:
The number of nodes in the tree will be in the range [0, 104].
-108 <= Node.val <= 108
All the values Node.val are unique.
-108 <= val <= 108
It's guaranteed that val does not exist in the original BST.

View file

@ -0,0 +1,30 @@
from typing import Optional
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def insertIntoBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
if not root:
return TreeNode(val, None, None)
if val < root.val:
root.left = self.insertIntoBST(root.left, val)
elif val > root.val:
root.right = self.insertIntoBST(root.right, val)
return root
if __name__ == "__main__":
s = Solution()
n10 = TreeNode(1, None, None)
n9 = TreeNode(3, None, None)
n8 = TreeNode(2, n10, n9)
n7 = TreeNode(7, None, None)
root = TreeNode(4, n8, n7)
# print(s.searchBST(root, 2).val)

View file

@ -0,0 +1,18 @@
700. Search in a Binary Search Tree
You are given the root of a binary search tree (BST) and an integer val.
Find the node in the BST that the node's value equals val and return the subtree rooted with that node. If such a node does not exist, return null.
Example 1:
Input: root = [4,2,7,1,3], val = 2
Output: [2,1,3]
Example 2:
Input: root = [4,2,7,1,3], val = 5
Output: []
Constraints:
The number of nodes in the tree is in the range [1, 5000].
1 <= Node.val <= 107
root is a binary search tree.
1 <= val <= 107

View file

@ -0,0 +1,32 @@
from typing import Optional
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def searchBST(self, root: Optional[TreeNode], val: int) -> Optional[TreeNode]:
if not root:
return None
if val < root.val:
return self.searchBST(root.left, val)
elif val > root.val:
return self.searchBST(root.right, val)
else:
return root
if __name__ == "__main__":
s = Solution()
n10 = TreeNode(1, None, None)
n9 = TreeNode(3, None, None)
n8 = TreeNode(2, n10, n9)
n7 = TreeNode(7, None, None)
root = TreeNode(4, n8, n7)
print(s.searchBST(root, 2).val)