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 }