Java完成復雜樹構造。本站提示廣大學習愛好者:(Java完成復雜樹構造)文章只能為提供參考,不一定能成為您想要的結果。以下是Java完成復雜樹構造正文
復雜的完成了一個樹的構造,很不完善!後續參考一些其他代碼的完成。
試圖完成葉子存在可變的節點,可以用來解析xml文件。
葉子的代碼:
package com.app;
import java.util.ArrayList;
import java.util.List;
public class treeNode<T> {
public T t;
private treeNode<T> parent;
public List<treeNode<T>> nodelist;
public treeNode(T stype){
t = stype;
parent = null;
nodelist = new ArrayList<treeNode<T>>();
}
public treeNode<T> getParent() {
return parent;
}
}
樹的代碼:
package com.app;
public class tree<T> {
public treeNode<T> root;
public tree(){}
public void addNode(treeNode<T> node, T newNode){
//添加根節點
if(null == node){
if(null == root){
root = new treeNode(newNode);
}
}else{
treeNode<T> temp = new treeNode(newNode);
node.nodelist.add(temp);
}
}
/* 查找newNode這個節點 */
public treeNode<T> search(treeNode<T> input, T newNode){
treeNode<T> temp = null;
if(input.t.equals(newNode)){
return input;
}
for(int i = 0; i < input.nodelist.size(); i++){
temp = search(input.nodelist.get(i), newNode);
if(null != temp){
break;
}
}
return temp;
}
public treeNode<T> getNode(T newNode){
return search(root, newNode);
}
public void showNode(treeNode<T> node){
if(null != node){
//循環遍歷node的節點
System.out.println(node.t.toString());
for(int i = 0; i < node.nodelist.size(); i++){
showNode(node.nodelist.get(i));
}
}
}
}
測試的主函數:
package com.app;
public class app {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*復雜完成一個樹的構造,後續完善解析xml */
/*寫得滿爛的,後續查閱一些其他代碼 2012-3-12 */
//測試
/*
* string
* hello
* sinny
* fredric
* world
* Hi
* York
* */
tree<String> tree = new tree();
tree.addNode(null, "string");
tree.addNode(tree.getNode("string"), "hello");
tree.addNode(tree.getNode("string"), "world");
tree.addNode(tree.getNode("hello"), "sinny");
tree.addNode(tree.getNode("hello"), "fredric");
tree.addNode(tree.getNode("world"), "Hi");
tree.addNode(tree.getNode("world"), "York");
tree.showNode(tree.root);
System.out.println("end of the test");
}
}
以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支持。