Add some binary trees tasks
This commit is contained in:
parent
3bad2db0f1
commit
df21a31267
6 changed files with 110 additions and 0 deletions
0
neetcode/binary_trees/delete_from_binary_tree/README.md
Normal file
0
neetcode/binary_trees/delete_from_binary_tree/README.md
Normal file
30
neetcode/binary_trees/insert_into_binary_tree/README.md
Normal file
30
neetcode/binary_trees/insert_into_binary_tree/README.md
Normal 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.
|
30
neetcode/binary_trees/insert_into_binary_tree/solution.py
Normal file
30
neetcode/binary_trees/insert_into_binary_tree/solution.py
Normal 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)
|
18
neetcode/binary_trees/search_in_a_binary_tree/README.md
Normal file
18
neetcode/binary_trees/search_in_a_binary_tree/README.md
Normal 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
|
32
neetcode/binary_trees/search_in_a_binary_tree/solution.py
Normal file
32
neetcode/binary_trees/search_in_a_binary_tree/solution.py
Normal 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)
|
Loading…
Reference in a new issue