>>314の<p></p>は対応しなければならないとして、「div1やdiv2にも<p>が有る場合にはそちらを検出」とあるので最低でも3つのパターンに対応しなければならない
彼(314)の中ではDOMツリーの頭になってなくて、テキストエディタで後方検索しているイメージなんだと思う

■ケース1
<div>
 <div id="div1">
  <p></p>
  <div id="div2"></div>
 </div>
</div>

■ケース2
<div>
 <div id="div1">
  <div id="div2"><p></p></div>
 </div>
</div>

■ケース3
<div>
 <div id="div1">
  <div id="div2"></div>
 </div>
</div>
<div>
 <p></p>
</div>