Advertisement
Guest User

Untitled

a guest
Jul 28th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. import java.util.LinkedList;
  2. import java.util.Queue;
  3. import java.util.Stack;
  4.  
  5. /**
  6. * 二叉树深度优先遍历和广度优先遍历
  7. * A
  8. * / \
  9. * B C
  10. * / \ /\
  11. * D E F G
  12. *
  13. * @author <a href='mailto:zhaotengfei9@gmail.com'>Tengfei Zhao</a>
  14. */
  15.  
  16. public class DFS_BFS {
  17. @org.junit.Test
  18. public void main() throws Exception {
  19. TreeNode treeNode = new TreeNode("A");
  20. treeNode.left = new TreeNode("B", new TreeNode("D"), new TreeNode("E"));
  21. treeNode.right = new TreeNode("C", new TreeNode("F"), new TreeNode("G"));
  22. System.out.println("-----DFS------");
  23. DFS(treeNode);
  24. System.out.println("-----BFS------");
  25. BFS(treeNode);
  26. }
  27.  
  28. /**
  29. * Depth First Search
  30. *
  31. * @param root
  32. */
  33. public void DFS(TreeNode root) {
  34. Stack<TreeNode> stack = new Stack<>();
  35. stack.add(root);
  36. while (!stack.isEmpty()) {
  37. // 移除最后一个
  38. TreeNode tempNode = stack.pop();
  39. System.out.println(tempNode.element);
  40. // 后进先出
  41. if (tempNode.right != null)
  42. stack.add(tempNode.right);
  43. if (tempNode.left != null)
  44. stack.add(tempNode.left);
  45.  
  46. }
  47. }
  48.  
  49. /**
  50. * Breadth First Search
  51. *
  52. * @param root
  53. */
  54. public void BFS(TreeNode root) {
  55. Queue<TreeNode> queue = new LinkedList<>();
  56. queue.add(root);
  57. // 先进先出
  58. while (!queue.isEmpty()) {
  59. TreeNode tempTreeNode = queue.remove();
  60. System.out.println(tempTreeNode.element);
  61. if (tempTreeNode.left != null)
  62. queue.add(tempTreeNode.left);
  63. if (tempTreeNode.right != null)
  64. queue.add(tempTreeNode.right);
  65. }
  66. }
  67.  
  68. class TreeNode {
  69. String element;
  70. TreeNode left;
  71. TreeNode right;
  72.  
  73. TreeNode(String element) {
  74. this.element = element;
  75. }
  76.  
  77. TreeNode(String element, TreeNode left, TreeNode right) {
  78. this.element = element;
  79. this.left = left;
  80. this.right = right;
  81. }
  82. }
  83.  
  84. }
  85.  
  86.  
  87. 打印结果:
  88. -----DFS------
  89. A
  90. B
  91. D
  92. E
  93. C
  94. F
  95. G
  96. -----BFS------
  97. A
  98. B
  99. C
  100. D
  101. E
  102. F
  103. G
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement