Today I Learned

최지웅·2024년 4월 12일
0

Today I Learned

목록 보기
140/238

오늘 할일
1. LeetCode
2. 창엔 3일차

오늘 한일
1. LeetCode

    1. Delete Node in a BST는 BST에서 특정 값을 탐색하여 지우는 것이다. 현재 시도는 BFS방식에서 노드 삭제 시 상위 노드 정보를 얻기 복잡하기에 하위노드단에서 값을 복사하여 해결하고자 했다.
class Solution {
    private void shift_copy(TreeNode node, TreeNode prev){
        if(node.val == prev.val){
            if(node.right!=null){
                node.val=node.right.val;
                shift_copy(node.right, node);
            } else{
                prev.right=null;
            }
        }
    }

    public TreeNode deleteNode(TreeNode root, int key) {
        if(root==null)
            return null;
        if(root.val==key && root.left==null && root.right==null)
            return null;
        Queue<TreeNode> queue=new LinkedList();
        queue.add(root);
        int depth=0, count=1;
        while(!queue.isEmpty()){
            TreeNode node=queue.remove();
            if(node.val==key){
                shift_copy(node, node);
            }
            if(node.left!=null)
                queue.add(node.left);
            if(node.right!=null)
                queue.add(node.right);
        }
        return root;
    }
}


하지만 현재의 방법으로는 말단 노드 삭제가 불가능했다.

profile
이제 3학년..

0개의 댓글