与えられたツリーデータnodeのすべての葉を取得

1969 ワード



package org.wyh;

import java.util.ArrayList;

public class GetNodesLeaves {

	static ArrayList<String> del = new ArrayList<String>();//  node

	/*
	 *  node 
	 */
	public void getDelNodes(ArrayList<String> src, String node, int len) {
		ArrayList<String> tmp = new ArrayList<String>();

		for (int i = 0; i < src.size(); i++) {

			if (src.get(i).startsWith(node)) {
				/*
				 *  node 
				 */
				if (len > 0) {
					getDelNodes(src, src.get(i), len - 1);

				} else {
					tmp.add(src.get(i));
				}
			}
		}
		for (int j = 0; j < tmp.size(); j++) {
			/*
			 *  node , node 
			 */
			if (tmp.size() > 1) {
				del.add(tmp.get(0));
			}

		}
	}

	
	/*
	 *  node 
	 */
	private void getLeaf(ArrayList<String> src, String node, int len) {
		getDelNodes(src, node, len);
		
		for (int j = 0; j < del.size(); j++) {
			src.remove(del.get(j));
		}

	}

	//  
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		GetNodesLeaves test = new GetNodesLeaves();
		ArrayList<String> srclist = new ArrayList<String>();
		srclist.add("0101");
		srclist.add("0102");
		srclist.add("0103");
		srclist.add("0104");
		srclist.add("01041");
		srclist.add("0104199");
		srclist.add("010419988");
		srclist.add("010419988a");
		srclist.add("010419988b");

		test.getLeaf(srclist, "01", srclist.size());
		for (String ss : srclist) {
			System.out.println(ss);
		}

	}
}