오늘 할일
1. LeetCode
2. 창엔 3일차
오늘 한일
1. LeetCode
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;
}
}
하지만 현재의 방법으로는 말단 노드 삭제가 불가능했다.