KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > polepos > circuits > sepang > Tree


1 /*
2 This file is part of the PolePosition database benchmark
3 http://www.polepos.org
4
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public
16 License along with this program; if not, write to the Free
17 Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
18 MA 02111-1307, USA. */

19
20 package org.polepos.circuits.sepang;
21
22
23 public class Tree {
24     
25     private static long idGenerator;
26     
27     public long id;
28     public Tree preceding;
29     public Tree subsequent;
30     public String JavaDoc name;
31     public int depth;
32     
33     public Tree(){
34     }
35     
36     public Tree(long id, String JavaDoc name, int depth){
37         this.id = id;
38         this.name = name;
39         this.depth = depth;
40     }
41     
42     public static Tree createTree(int depth){
43         idGenerator = 0;
44         return createTree(depth, 0);
45     }
46     
47     private static Tree createTree(int maxDepth, int currentDepth){
48         
49         if(maxDepth <= 0){
50             return null;
51         }
52         
53         Tree tree = new Tree();
54         if(currentDepth == 0){
55             tree.name = "root";
56         }else{
57             tree.name = "node at depth " + currentDepth;
58         }
59         tree.id = ++idGenerator;
60         tree.depth = currentDepth;
61         tree.preceding = createTree(maxDepth - 1, currentDepth + 1);
62         tree.subsequent = createTree(maxDepth - 1, currentDepth + 1);
63         return tree;
64     }
65     
66     public static void traverse(Tree tree, TreeVisitor visitor){
67         if(tree == null){
68             return;
69         }
70         traverse(tree.preceding, visitor);
71         traverse(tree.subsequent, visitor);
72         visitor.visit(tree);
73     }
74     
75     public int getDepth(){
76         return depth;
77     }
78     
79 }
80
Popular Tags