Dom的深度優先遍歷和廣度優先遍歷
阿新 • • 發佈:2017-12-31
深度 class pos shift ret unshift ext bsp wide
//深度優先遍歷的遞歸寫法 function DFTraversal(node) { var nodes = []; if (node != null) { nodes.push(node); var children = node.children; for (var i = 0; i < children.length; i++){ deepTraversal(children[i]); } } return nodes; } //深度優先遍歷的非遞歸寫法function DFT(node) { var nodes = []; if (node != null) { var stack = []; stack.push(node); while (stack.length != 0) { var item = stack.pop(); nodes.push(item); var children = item.children; for (var i = children.length - 1; i >= 0; i--){ stack.push(children[i]); } } }return nodes; } //廣度優先遍歷的遞歸寫法 function BSTraversal(node) { var nodes = []; var i = 0; if (node != null) { nodes.push(node); wideTraversal(node.nextElementSibling); node = nodes[i++]; wideTraversal(node.firstElementChild); } return nodes; } //廣度優先遍歷的非遞歸寫法function BFT(selectNode) { var nodes = []; if (selectNode != null) { var queue = []; queue.unshift(selectNode); while (queue.length != 0) { var item = queue.shift(); nodes.push(item); var children = item.children; for (var i = 0; i < children.length; i++){ queue.push(children[i]); } } } return nodes; }
Dom的深度優先遍歷和廣度優先遍歷