Blog信息 |
blog名称:小鸟吹烟 日志总数:157 评论数量:424 留言数量:-1 访问次数:1252822 建立时间:2006年10月23日 |

| |
[J2SE]树1 文章收藏, 网上资源, 心得体会
tone 发表于 2007/3/22 10:51:45 |
package com.designPattern;
import java.util.Arrays;import java.util.Iterator;import java.util.List;
public class TestTree { private Object data; private TestTree leftChild; private TestTree rightChild;
public TestTree() {}
public TestTree(Object data) { this.data = data; }
public Object getData() { return data; }
public void setData(Object data) { this.data = data; }
public TestTree getLeftChild() { return leftChild; }
public void setLeftChild(TestTree bt) { leftChild = bt; }
public TestTree getRightChild() { return rightChild; }
public void setRightChild(TestTree bt) { rightChild = bt; }
// 先序二叉树字符串 public String toStringByPreOrder() { StringBuffer result = new StringBuffer(); result.append(data); result.append(" "); if (leftChild != null) { result.append(leftChild.toStringByPreOrder()); } if (rightChild != null) { result.append(rightChild.toStringByPreOrder()); } return result.toString(); }
// 中序二叉树字符串 public String toStringByInOrder() { StringBuffer result = new StringBuffer(); if (leftChild != null) { result.append(leftChild.toStringByInOrder()); } result.append(data); result.append(" "); if (rightChild != null) { result.append(rightChild.toStringByInOrder()); } return result.toString(); }
// 后序二叉树字符串 public String toStringByAfterOrder() { StringBuffer result = new StringBuffer(); if (leftChild != null) { result.append(leftChild.toStringByAfterOrder()); } if (rightChild != null) { result.append(rightChild.toStringByAfterOrder()); } result.append(data); result.append(" "); return result.toString(); }
// 先序生成二叉树 public static TestTree createTestTreeByPreOrder(Iterator it) { TestTree bt = null; Object o = it.next(); if (o != null) { bt = new TestTree(o); bt.setLeftChild(createTestTreeByPreOrder(it)); bt.setRightChild(createTestTreeByPreOrder(it)); } return bt; }
// 中序生成二叉树 public static TestTree createTestTreeByInOrder(Iterator it) { TestTree bt = null; Object o = it.next(); if (o != null) { bt = new TestTree(); bt.setLeftChild(createTestTreeByInOrder(it)); bt.setData(o); bt.setRightChild(createTestTreeByInOrder(it)); } return bt; }
// 后序生成二叉树 public static TestTree createTestTreeByAfterOrder(Iterator it) { TestTree bt = null; Object o = it.next(); if (o != null) { bt = new TestTree(); bt.setLeftChild(createTestTreeByAfterOrder(it)); bt.setRightChild(createTestTreeByAfterOrder(it)); bt.setData(o); } return bt; }
public static void main(String[] args) { System.out.println("-------------------- bt ---------------------"); TestTree bt = new TestTree("A"); bt.setLeftChild(new TestTree("B")); bt.setRightChild(new TestTree("C")); System.out.println("pre order : " + bt.toStringByPreOrder()); System.out.println("in order : " + bt.toStringByInOrder()); System.out.println("after order : " + bt.toStringByAfterOrder());
System.out.println("-------------------- bt2 ---------------------"); TestTree bt2 = null; Object[] sequence = new Object[] { "A", "B", "C", null, null, "D", "E", null, "G", null, null, "F", null, null, null }; List l = Arrays.asList(sequence); System.out.println("sequence : " + l);
bt2 = createTestTreeByPreOrder(l.iterator()); System.out.println("pre order : " + bt2.toStringByPreOrder());
bt2 = createTestTreeByInOrder(l.iterator()); System.out.println("in order : " + bt2.toStringByInOrder());
bt2 = createTestTreeByAfterOrder(l.iterator()); System.out.println("after order : " + bt2.toStringByAfterOrder()); }} |
|
回复:树1 文章收藏, 网上资源, 心得体会
tone发表评论于2007/3/22 10:53:32 |
package com.designPattern;
import java.util.ArrayList;import java.util.Iterator;import java.util.List;
public class TestTree2 { public static void generateTree(List list, int pid , int level){ StringBuffer title = new StringBuffer("") ; if( list != null && list.size() != 0){ Iterator it = list.iterator() ; while(it.hasNext()){ Tree node = (Tree)it.next();//得到一个节点 if(node.getPid()==pid){ for(int i = 0 ; i < level ; i ++){ title.append(" "); } String name = node.getName();//得到节点的名称 title.append(name); System.out.println(title.toString()); title = new StringBuffer(""); generateTree(list,node.getId(),level+1); } } } } public static void main(String[] args){ Tree tree1 = new Tree(0,1,"一级标题"); Tree tree2 = new Tree(1,2,"二级标题"); Tree tree3 = new Tree(2,3,"三级标题"); Tree tree4 = new Tree(0,4,"一级标题"); Tree tree5 = new Tree(3,5,"四级标题"); Tree tree6 = new Tree(1,6,"二级标题"); Tree tree7 = new Tree(1,7,"二级标题"); Tree tree8 = new Tree(0,8,"一级标题"); Tree tree9 = new Tree(2,9,"三级标题"); Tree[] tree = {tree1,tree2,tree3,tree4,tree5,tree6,tree7,tree8,tree9}; List list = new ArrayList(); for(int i = 0 ; i < tree.length ; i ++){ list.add(tree[i]); } generateTree(list,0,0); } } class Tree{ public int id; public int pid; public String name; public Tree(int pid,int id,String name){ this.id =id; this.pid =pid; this.name =name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPid() { return pid; } public void setPid(int pid) { this.pid = pid; } }
http://blog.csdn.net/ecaterina/archive/2007/03/19/1533680.aspx |
|
» 1 »
|