Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. @Override
  2. public boolean kTraCTEuler() {
  3. if(isConnection()==false||adj.length<=1)
  4. return false;
  5. for(int i = 0; i<adj.length;i++) {
  6. if((degreeOvertex(i)%2)!=0)
  7. return false;
  8. }
  9. return true;
  10. }
  11. // xuất ra chu trình euler của đồ thị nếu có
  12. @Override
  13. public ArrayList<Integer> xuatCTrinhEuler(int start) {
  14. ArrayList<Integer> result = new ArrayList<>();
  15. if (kTraCTEuler()) {
  16. int[][] arrCopy = saoMang(adj);
  17. Stack<Integer> stack = new Stack<>();
  18. stack.push(start);
  19. ArrayList<Integer> listVisit = new ArrayList<>();
  20. while (!stack.isEmpty()) {
  21. int v = stack.peek();
  22. boolean found = false;
  23. for (int i = 0; i < arrCopy.length; i++) {
  24. if ((arrCopy[v][i] > 0)) {
  25. found = true;
  26. stack.push(i);
  27. arrCopy[v][i]--;
  28. arrCopy[i][v]--;
  29. break;
  30. }
  31. }
  32. if (found == false) {
  33. // int vertex = stack.pop();
  34. listVisit.add(stack.pop());
  35. }
  36. }
  37. // đảo ngược listVisit lại vì pop từ stack.
  38. for (int i = listVisit.size() - 1; i >= 0; i--) {
  39. result.add(listVisit.get(i));
  40. }
  41. return result;
  42. }
  43. return result;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement