樹的深度與廣度優先搜索(偽代碼)


深度優先搜索

public void depthFirstSearch() {
        
        Stack<Map<String, Object>> nodeStack = new Stack<Map<String, Object>>();
        Map<String, Object> node = new HashMap<String, Object>();
        /**
         * 第一個節點放入
         */
        nodeStack.add(node);
        while (!nodeStack.isEmpty()) {
            node = nodeStack.pop();
            log.info(node);
            List<Map<String, Object>> list = getChildren(node);
            if (!CollectionUtil.isBlank(list)) {
                for (Map<String, Object> child : list) {
                    nodeStack.add(child);
                }
            }
        }
        
    }

 

 

廣度優先搜索

public void breadthFirstSearch() {
        ArrayDeque<Map<String, Object>> nodeDeque = new ArrayDeque<Map<String, Object>>();
        Map<String, Object> node = new HashMap<String, Object>();
        /**
         * 第一個節點放入
         */
        nodeDeque.add(node);
        while (!nodeDeque.isEmpty()) {
            node = nodeDeque.pop();
            log.info(node);
            List<Map<String, Object>> list = getChildren(node);
            if (!CollectionUtil.isBlank(list)) {
                for (Map<String, Object> child : list) {
                    nodeDeque.add(child);
                }
                
            }
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM