java实现树

package;

import java.util.ArrayList;
import java.在这里插入代码片util.LinkedList;
import java.util.Queue;

public class 树的构建 {
	public static void main(String[] args) {
		TreeNode<Integer> root = new TreeNode<Integer>(1);
		MyTree<Integer> tree = new MyTree<Integer>(root);
		TreeNode<Integer> childNode2 = new TreeNode<Integer>(2);
		tree.insert(root, childNode2);
		TreeNode<Integer> childNode3 = new TreeNode<Integer>(3);
		tree.insert(root, childNode3);
		TreeNode<Integer> childnNode5 = new TreeNode<Integer>(5);
		tree.insert(childNode2, childnNode5);
		TreeNode<Integer> childNode4 = new TreeNode<Integer>(4);
		TreeNode<Integer> childNode6 = new TreeNode<Integer>(6);
		tree.insert(childNode3, childNode4);
		tree.insert(childNode3,childNode6);
		System.out.println(tree.size);
		tree.print();
 	}

}
class TreeNode<Integer>{//节点类
	int data;
	TreeNode<Integer> parent;
	ArrayList<TreeNode<Integer>> children;
	public TreeNode(int data) {
		this.data = data;
	}
	@Override
	public String toString() {
		return "TreeNode [data=" + data + "]";
	}
	
}

class MyTree<Integer>{//树
	int size = 0;
	TreeNode<Integer> root;
	public MyTree(TreeNode<Integer> root){
		this.root = root;
		size++;
	}
	public void insert(TreeNode<Integer> p,TreeNode<Integer> child){
		if(p.children==null){
			p.children = new ArrayList<TreeNode<Integer>>();
		}
		//双向
		p.children.add(child);//加入到孩子列表
		child.parent = p;//指明父亲
		size++;
	}
	public void print(){//层次输出
		Queue<TreeNode<Integer>> queue = new LinkedList<TreeNode<Integer>>();
		queue.add(root);
		while(!queue.isEmpty()){
			TreeNode<Integer> dxl  = queue.poll();
			System.out.println(dxl);
			if(dxl.children!=null)
			for(TreeNode<Integer> ttt:dxl.children)
				queue.add(ttt);
		}
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值