What's the difference between a broadcast algorithm and a flooding algorithm? Both the broadcast algorithm and the flooding algorithm seem exactly the same to me, some sites try to explain the difference but then other sites contradict their statements. At the moment I see both algorithms starting at a specific starting node. This starting node will send a message to all of its neighbors, and once received, the neighbors will send the message to all of their neighbors in turn, etc, etc. What is the difference?

Does the broadcast algorithm use a spanning tree, and the flooding algorithm doesn't? Does the flooding algorithm use previously used edges, whereas the broadcast algorithm only use edges that aren't used yet?
Broadcast routing is of three types :

1.) N-way unicast routing - There are N destinations and the source sends a copy of the packet to each destination by making N copies of the packet
and addressing each copy to a different destination.

2.) Uncontrolled flooding - The source node sends a copy of the packet to
all of its neighbors. When a node receives the packet, it
duplicates the packet and send to all of its neighbors except the sender.

3.) Controlled flooding - A source node puts its address and broadcast
sequence number into the packet. It sends the packet to all of it's neighbor. Each node maintains a list of the source address and
sequence number of each broadcast packet it has received. When a node receives a broadcast packet. If the received broadcast message has the source address and sequence number already present in the list then it will drop the packet otherwise make a copy and forward it to all the neighbors except sender.