树-层次遍历
1 package com.charles.algorithm; 2 3 import java.util.LinkedList; 4 import java.util.Queue; 5 6 public class Tree { 7 8 private Queue<TreeNode> elements = new LinkedList<TreeNode>(); 9 10 public static void main(String[] args) { 11 /* 12 * @desc: construct a tree: 13 * root 14 * A B 15 * C D E F 16 * G H I J 17 */ 18 19 TreeNode root = new TreeNode("root"); 20 21 TreeNode A = new TreeNode("A"); 22 TreeNode B = new TreeNode("B"); 23 TreeNode C = new TreeNode("C"); 24 TreeNode D = new TreeNode("D"); 25 TreeNode E = new TreeNode("E"); 26 TreeNode F = new TreeNode("F"); 27 TreeNode G = new TreeNode("G"); 28 TreeNode H = new TreeNode("H"); 29 TreeNode I = new TreeNode("I"); 30 TreeNode J = new TreeNode("J"); 31 32 root.setLeft(A); 33 root.setRight(B); 34 A.setLeft(C); 35 A.setRight(D); 36 B.setLeft(E); 37 B.setRight(F); 38 C.setLeft(G); 39 C.setRight(H); 40 D.setLeft(I); 41 D.setRight(J); 42 43 Tree tree = new Tree(); 44 tree.broadTraval(root); 45 } 46 47 public void broadTraval(TreeNode root) { 48 49 if (null != root) { 50 elements.add(root); 51 } else { 52 return; 53 } 54 55 while (0 < elements.size()) { 56 root = elements.poll(); 57 System.out.println(root.getData()); 58 if (null != root.getLeft()) { 59 elements.add(root.getLeft()); 60 } 61 if (null != root.getRight()) { 62 elements.add(root.getRight()); 63 } 64 } 65 } 66 } 67 68 class TreeNode { 69 /* 70 * @Desc: define a tree node 71 */ 72 73 private String data; 74 private TreeNode left; 75 private TreeNode right; 76 77 public TreeNode() { 78 } 79 80 public TreeNode(String data) { 81 super(); 82 this.data = data; 83 } 84 85 public String getData() { 86 return data; 87 } 88 89 public void setData(String data) { 90 this.data = data; 91 } 92 93 public TreeNode getLeft() { 94 return left; 95 } 96 97 public void setLeft(TreeNode left) { 98 this.left = left; 99 } 100 101 public TreeNode getRight() { 102 return right; 103 } 104 105 public void setRight(TreeNode right) { 106 this.right = right; 107 } 108 }