深度优先遍历

就是dfs,有个好听的名字叫回溯,其实就是穷举法,这种算法的时间复杂度为n^level ,效率还是很低的。

下面举一个例子:给一个字符数组遍历其所有的元素,输出所有的可能情况

import java.util.ArrayDeque;
import java.util.Deque;

public class DFSTest {
    public static void main(String[] args) {
        Character[] p = {'A', 'B', 'C'};

        dfs(p , new ArrayDeque<>());
    }

    /**
     * 遍历所有的元素,输出所有的可能情况
     **/
    private static void dfs(Character[] p, Deque<Character> res) {
        if (res.size() == p.length) {
            System.out.println(res);
            return;
        }
        for (int i = 0; i < p.length; i++) {
            Character c = p[i];
            if (c != null) {
                res.push(c);
                p[i] = null;
                dfs(p, res);
                res.pop();
                p[i] = c;
            }
        }
    }
}

 

posted @ 2020-06-21 08:55  冬马党  阅读(232)  评论(0)    收藏  举报