二叉树:
public class MyTree {
/*
* 二叉树
* 先有根。
* 数据小的放左子树
* 数据大的放右子树
*
*/
private int data;//根或者是数据
private MyTree left;//左子树
private MyTree right;//右子树
public MyTree(int i){
data=i;
}
private void add(MyTree tree){
//若传入的数据比当前的数据小
if(tree.data<this.data){
if(left==null){
//数据小放左子树
left=tree;
}else{
//否则另外增加一个树
left.add(tree);
}
}else{
if(right==null){
//数据大放左子树
right=tree;
}else{
//否则另外增加一个树
right.add(tree);
}
}
}
public void show(){
if(left!=null){
left.show();
}
System.out.println(data);
if(right!=null){
right.show();
}
}
public static void main(String[] args) {
MyTree tree=new MyTree(100);
tree.add(new MyTree(20));
tree.add(new MyTree(80));
tree.add(new MyTree(40));
tree.add(new MyTree(36));
tree.show();
}
多叉树:
public class TreeDemo {
private List<Node> list=new ArrayList<Node>();
class Node{
String data;
String parent;
}
private void add(String parent,String child){
Node node=new Node();
node.data=child;
node.parent=parent;
list.add(node);
}
private void findParent(String child){
for(int i=0;i<list.size();i++){
if(list.get(i).data.equals(child)){
System.out.println("父节点是-->"+list.get(i).parent);
}
}
}
private void findChild(String parent){
for(int i=0;i<list.size();i++){
if(list.get(i).parent.equals(parent)){
System.out.println("子节点有-->"+list.get(i).data);
}
}
}
public static void main(String[] args){
TreeDemo demo=new TreeDemo();
demo.add("班级", "1班");
demo.add("班级", "2班");
demo.add("班级", "3班");
demo.add("1班", "小黑");
demo.add("1班", "小黑1");
demo.add("1班", "小黑2");
demo.add("2班", "小白1");
demo.add("2班", "小白2");
demo.add("3班", "小黄1");
demo.add("3班", "小黄2");
demo.findParent("小黑1");
demo.findChild("3班");
}
}