树节点类型定义

/** 定义树节点类型 */
	public static class TreeNode<T>
	{
		T data;									// 节点数据
		TreeNode<T> parent;						// 当前节点的父节点
		public ArrayList<TreeNode<T>> childs;	// 子节点
		
		public TreeNode(T data)
		{
			this.data = data;
		}
		
		/** 向当前节点中添加子节点 */
		public void add(TreeNode<T> child)
		{
			if (childs == null) childs = new ArrayList<TreeNode<T>>();
			if (!childs.contains(child))
			{
				childs.add(child);
				child.parent = this;
			}
		}
		
		/** 向当前节点中添加以data为数据的子节点 */
		public void add(T data)
		{
			TreeNode<T> child = new TreeNode<T>(data);
			add(child);
		}
		
		/** 向当前节点中添加子节点 */
		public void add(ArrayList<T> datas)
		{
			for (T data : datas)
				add(data);
		}
		
		/** 向当前节点中移除子节点child */
		public void remove(TreeNode<T> child)
		{
			if (childs == null && !childs.contains(child)) childs.remove(child);
		}
		
		// public int getChildIndex(T key)
		// {
		// for()
		// }
		
		/** 在当前节点的所有子节点中寻找数据为key的子节点 */
		public TreeNode<T> getChild(T key)
		{
			for (TreeNode<T> node : childs)
			{
				if (node.data.equals(key)) return node;
			}
			
			return null;
		}
		
		/** 定义树节点的字符串形式为数据data的字符串形式 */
		public String toString()
		{
			return data.toString();
		}
		
		/** 将数组转化为列表 */
		public ArrayList<T> toList(T[] Array)
		{
			ArrayList<T> list = new ArrayList<T>();
			for (T A : Array)
				list.add(A);
			return list;
		}
		
		// /** 将列表转化为数组 */
		// public T[] toArray(ArrayList<T> list)
		// {
		// if(list == null || list.size() == 0) return null;
		// T[] Array = new T[list.size()];
		// int i = 0;
		//
		// for (T A : list)
		// Array[i++] = A;
		// return Array;
		// }
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值