如有转载请注明出处 https://www.jianshu.com/p/077cf3957a3a
绪论
set的集合有HashSet和TreeSet两种,他们都是线程不安全的,并且可以实现数据不重复。HashSet的内部原理是HashMap实现的,TreeSet是TreeMap实现的
TreeMap
treeMap也比较简单,里面实现了比较器,根据大小来去放置数据。如果没有数据那么就把第一条数据设置为树的根节点,如果其他数据小于根节点,就把它放在树的左节点,如果其他数据大于根节点,就把它放在树的右节点。
写代码实现一个树
package a.f;
public class Tree {
//先序
public void PFTree(TreeNode root){
if (root==null){
return;
}
System.out.print(root.obj+"...");
PFTree(root.left);
PFTree(root.right);
}
//中序
public void PZTree(TreeNode root){
if (root==null){
return;
}
PZTree(root.left);
System.out.print(root.obj+"...");
PZTree(root.right);
}
//后序
public void PBTree(TreeNode root){
if (root==null){
return;
}
PBTree(root.left);
PBTree(root.right);
System.out.print(root.obj+"...");
}
public TreeNode build(int[] a){
TreeNode root = new TreeNode(a[0]);
for (int i = 1; i < a.length; i++) {
TreeNode treeNode = new TreeNode(a[i]);
sort(root,treeNode);
}
return root;
}
private void sort(TreeNode root, TreeNode treeNode) {
if (root.obj>=treeNode.obj){
if (root.left!=null){
sort(root.left,treeNode);
}else{
treeNode.parent=root;
root.left=treeNode;
}
}else{
if (root.right!=null){
sort(root.right,treeNode);
}else{
treeNode.parent=root;
root.right=treeNode;
}
}
}
public static void main(String[] args) {
int[] a={100,35,3,44,212,453};
Tree tree = new Tree();
TreeNode root = tree.build(a);
System.out.println("先序");
tree.PFTree(root);
System.out.println();
System.out.println("中序");
tree.PZTree(root);
System.out.println();
System.out.println("后序");
tree.PBTree(root);
}
}
package a.f;
public class TreeNode {
public TreeNode parent;
public TreeNode left;
public TreeNode right;
public Integer obj;
public TreeNode(Integer obj){
this.obj=obj;
}
}
网友评论