`
jayzotion
  • 浏览: 47927 次
  • 性别: Icon_minigender_1
  • 来自: 森林之城
社区版块
存档分类
最新评论

取得给定树形数据node的所有叶子

    博客分类:
  • java
J# 
阅读更多

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);
		}

	}
}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics