I found the answer from @britzl’s post at Factory for GUI?(SOLVED)
The answer is No, gui.delete_node() will not delete children nodes automatically. It would be nice to add this info to the doc.
It would be better to have gui.get_child(node, index) or gui.get_children(node) for this deleting purpose by loop through the children.
It would be great to have a function like gui.delete_nodes() (notice s) which deletes the given node and all of its children
Thanks