Mercurial > hg > Members > shoshi > TreeCMS > TreeCMSPrototype1
view src/treecms/proto/test/PreOrderTreeWalker.java @ 0:f815c7c1fb38
hg init
author | shoshi |
---|---|
date | Fri, 27 Aug 2010 15:26:20 +0900 |
parents | |
children | 9d7863f367bb |
line wrap: on
line source
package treecms.proto.test; import java.util.Iterator; import java.util.LinkedList; import treecms.proto.api.NodeAPI; public class PreOrderTreeWalker implements Iterator<NodeAPI> , Iterable<NodeAPI> { private NodeAPI m_root; private LinkedList<Iterator<NodeAPI>> m_childs; private int m_pos; public PreOrderTreeWalker(NodeAPI _root) { m_root = _root; m_childs = new LinkedList<Iterator<NodeAPI>>(); for(NodeAPI child : _root.getChildList()){ m_childs.add((new PreOrderTreeWalker(child)).iterator()); } m_pos = -2; } @Override public Iterator<NodeAPI> iterator() { // TODO Auto-generated method stub return this; } @Override public boolean hasNext() { // TODO Auto-generated method stub int next = m_pos + 1; if(next < 0){ return true; } for(;next < m_childs.size();next ++){ System.out.println(m_pos); if(m_childs.get(next).hasNext()){ return true; } } return false; } @Override public NodeAPI next() { // TODO Auto-generated method stub m_pos++; if(m_pos < 0){ return this.m_root; } for(;m_pos < m_childs.size();m_pos ++){ NodeAPI nextNode = m_childs.get(m_pos).next(); if(nextNode != null){ return nextNode; } } return null; } @Override public void remove() { // TODO Auto-generated method stub } }