num
passé en argument et
rendu en résultat. Une variable globale (statique) fait tout aussi
bien l'affaire.
static private int doPrefix (int s, int num, boolean [] vu) { if (vu[s]) return num ; vu[s] = true ; System.out.print(" " + s + ":" + num) ; num++ ; for (List p = succ[s] ; p != null ; p = p.next) { num = doPrefix(p.val, num, vu) ; } return num ; } static void prefix(int s) { boolean [] vu = new boolean [succ.length] ; doPrefix(s,0,vu) ; System.out.println() ; } |
static private int doSuffix (int s, int num, boolean [] vu) { if (vu[s]) return num ; vu[s] = true ; for (List p = succ[s] ; p != null ; p = p.next) { num = doSuffix(p.val, num, vu) ; } System.out.print(" " + s + ":" + num) ; num++ ; return num ; } static void suffix(int s) { boolean [] vu = new boolean [succ.length] ; doSuffix(s,0,vu) ; System.out.println() ; } |
private static void xbfs(int s) { Lifo stack = new Lifo () ; boolean [] vu = new boolean[succ.length] ; stack.add(s) ; stack.add(s) ; do { int n = stack.get () ; int pere = stack.get () ; if (!vu[n]) { vu[n] = true ; System.out.print(" " + n + "<" + pere + ">") ; for (List p = succ[n] ; p != null ; p = p.next) { stack.add(n) ; stack.add(p.val) ; } } } while (!stack.isEmpty()) ; } |