深度優先演算法最常用的是在DOM樹查詢中的實現
設計思路:修改nextElement的查詢方式,如果有子節點,則下一個元素就是它的第一個子節點,否則,判斷是否有相鄰的節點,如果有返回它的相鄰元素,如果即沒有子節點也沒有相鄰節點,就返回父節點的下一個相鄰節點,然後重新進入迴圈佇列。
<div id="id-data-structure"> 我是body</div>function getElementById(node, id) { while(node) { if (node.id === id) { return node; } node = nextNode(node); }}function nextNode(node) { if (node.children.length) { return node.children[0]; } if (node.nextElementSibling) { return node.nextElementSibling; } while (node.parentNode) { if (node.parentNode.nextElementSibling) { return node.parentNode.nextElementSibling; } } return null;}getElementById(document, "id-data-structure");
最新評論