Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.LinkedList;
- import java.util.Queue;
- import java.util.Stack;
- /**
- * 二叉树深度优先遍历和广度优先遍历
- * A
- * / \
- * B C
- * / \ /\
- * D E F G
- *
- * @author <a href='mailto:zhaotengfei9@gmail.com'>Tengfei Zhao</a>
- */
- public class DFS_BFS {
- @org.junit.Test
- public void main() throws Exception {
- TreeNode treeNode = new TreeNode("A");
- treeNode.left = new TreeNode("B", new TreeNode("D"), new TreeNode("E"));
- treeNode.right = new TreeNode("C", new TreeNode("F"), new TreeNode("G"));
- System.out.println("-----DFS------");
- DFS(treeNode);
- System.out.println("-----BFS------");
- BFS(treeNode);
- }
- /**
- * Depth First Search
- *
- * @param root
- */
- public void DFS(TreeNode root) {
- Stack<TreeNode> stack = new Stack<>();
- stack.add(root);
- while (!stack.isEmpty()) {
- // 移除最后一个
- TreeNode tempNode = stack.pop();
- System.out.println(tempNode.element);
- // 后进先出
- if (tempNode.right != null)
- stack.add(tempNode.right);
- if (tempNode.left != null)
- stack.add(tempNode.left);
- }
- }
- /**
- * Breadth First Search
- *
- * @param root
- */
- public void BFS(TreeNode root) {
- Queue<TreeNode> queue = new LinkedList<>();
- queue.add(root);
- // 先进先出
- while (!queue.isEmpty()) {
- TreeNode tempTreeNode = queue.remove();
- System.out.println(tempTreeNode.element);
- if (tempTreeNode.left != null)
- queue.add(tempTreeNode.left);
- if (tempTreeNode.right != null)
- queue.add(tempTreeNode.right);
- }
- }
- class TreeNode {
- String element;
- TreeNode left;
- TreeNode right;
- TreeNode(String element) {
- this.element = element;
- }
- TreeNode(String element, TreeNode left, TreeNode right) {
- this.element = element;
- this.left = left;
- this.right = right;
- }
- }
- }
- 打印结果:
- -----DFS------
- A
- B
- D
- E
- C
- F
- G
- -----BFS------
- A
- B
- C
- D
- E
- F
- G
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement