code: func (d *Database) Del(path string) {
  	d.mtx.Lock()
  	defer d.mtx.Unlock()
  
  	if path == "" {
  		d.root = &Node{
  			Children: map[string]*Node{},
  		}
  		return
  	}
  
  	rabbitHole := strings.Split(path, "/")
  	current := d.root
  
  	// traverse to target node's parent
  	var delIdx int
  	for ; delIdx < len(rabbitHole)-1; delIdx++ {
  		next, ok := current.Children[rabbitHole[delIdx]]
  		if !ok {
  			// item does not exist, no need to do anything
  			return
  		}
  
  		current = next
  	}
  
  	endNode := current
  	leafPath := rabbitHole[len(rabbitHole)-1]
  	delete(endNode.Children, leafPath)
  
  	for tmp := endNode.prune(); tmp != nil; tmp = tmp.prune() {
  		delIdx--
  		endNode = tmp
  	}
  
  	if endNode != nil {
  		delete(endNode.Children, rabbitHole[delIdx])
  	}
  }
docs: // Del removes the node at the given path.