반응형
LV. Medium 🧐
https://leetcode.com/problems/insert-into-a-binary-search-tree/
문제
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.
문제 해결법
새로 생성할 val > 현재 node의 val -> 더 큰 값으로 이용해야 되기 때문에 현재 node를 node->right로 옮겨줌!
새로 생성할 val < 현재 node의 val -> 더 작은 값으로 이용해야 되기 때문에 현재 node를 node->left로 옮겨줌!
이렇게 옮기다가 자신의 자리를 찾으면(더 이상 이동할 수 있는 node가 없음) 새로운 node를 생성하여 nodelist에 붙여준다
해결 코드
class Solution {
public:
TreeNode* insertIntoBST(TreeNode* root, int val) {
TreeNode *temp = root;
if (!temp) {
TreeNode *newTreeNode = new TreeNode(val);
root = newTreeNode;
return root;
}
while (1) {
if (temp->val > val && temp->left) {
temp = temp->left;
}
else if (temp->val > val) {
TreeNode *newTreeNode = new TreeNode(val);
temp->left = newTreeNode;
break ;
}
else if (temp->val < val && temp->right) {
temp = temp->right;
}
else if (temp->val < val) {
TreeNode *newTreeNode = new TreeNode(val);
temp->right = newTreeNode;
break ;
}
}
return root;
}
};
728x90
'Computer Science > 알고리즘' 카테고리의 다른 글
leetcode 8) String to Integer (atoi) (0) | 2022.01.14 |
---|---|
leetcode 452) Minimum Number of Arrows to Burst Balloons (0) | 2022.01.14 |
leetcode 1022) Sum of Root To Leaf Binary Numbers (0) | 2022.01.11 |
leetcode 67) Add Binary (0) | 2022.01.10 |
leetcode 1041) Robot Bounded In Circle (0) | 2022.01.09 |
댓글