zoukankan      html  css  js  c++  java
  • 数据结构学习--Java树

    一、为什么需要使用树

    有序数组插入数据项太慢,不过查询快,因为存储数据地址都是连在一起的。

    链表查找数据太慢,不过插入删除快。

    二、路径

    顺着连接节点的边从一个节点到另一个节点,所经过的节点顺序排列称为路径。

    三、根

    树最上面的节点称为根节点。一棵树只有一个根。而且从根到任何节点有且只有一条路径。

    四、父节点

    每个节点都有一条边向上连接到另一个节点,这个节点就称为是下面这个节点的父节点。

    五、子节点

    每个节点都有一条边向下连接到另一个节点,下面的节点就是该节点的子节点。

    六、叶子节点

    没有子节点的节点称为叶子节点。

    七、子树

    每个节点都可以作为一个子树的根,它和它所有的子节点,子节点的子节点组合在一起就是一个子树。

    八、访问

    访问一个节点是为了在这个节点上执行一些操作,如查看节点的数据项,但是如果仅仅是经过一个节点,不认为是

    访问了这个节点。

    九、层

    一个节点的层是指从根开始到这个节点有多少代。

    十、二叉树

    树的每个节点最多只能有两个子节点的树。

    Node.java

    package com.example.deer;

    public class Node {
    //数据项
    public long data;
    //数据项
    public String sData;
    //左子节点
    public Node leftChild;
    //右子节点
    public Node rightChild;

    public Node(long data,String sData){
    this.data = data;
    this.sData = sData;
    }
    }

    Tree.java

    package com.example.deer;

    public class Tree {
    //根节点
    public Node root;

    /**
    * 插入节点
    * @param value
    */
    public void insert(long value,String sValue){
    //封装节点
    Node newNode = new Node(value,sValue);
    //引用当前节点
    Node current = root;
    //引用父节点
    Node parent;
    //如果root为null,也就是第一次插入的时候
    if(root == null){
    root = newNode;
    return;
    }else{
    while (true){
    //父节点指向当前节点
    parent = current;
    //如果当前指向的节点数据比插入的要大,则向左走
    if(current.data > value){
    current = current.leftChild;
    if(current == null){
    parent.leftChild = newNode;
    return;
    }
    }else{
    current = current.rightChild;
    if(current == null){
    parent.rightChild = newNode;
    return;
    }
    }
    }
    }
    }
    /**
    * 查找节点
    */
    public Node find(long value){
    //引用当前节点,从根节点开始
    Node current = root;
    //循环,只要查找值不等于当前节点的数据项
    while(current.data != value){
    //进行比较,比较查找值和当前节点的大小
    if(current.data > value){
    current = current.leftChild;
    } else {
    current = current.rightChild;
    }
    if(current == null){
    return null;
    }
    }
    return current;
    }
    }
  • 相关阅读:
    【NOIP2007】守望者的逃离
    20200321(ABC)题解 by 马鸿儒 孙晨曦
    20200320(ABC)题解 by 王一帆
    20200319(ABC)题解 by 王一帆 梁延杰 丁智辰
    20200314(ABC)题解 by 董国梁 蒋丽君 章思航
    20200309(ABC)题解 by 梁延杰
    20200307(DEF)题解 by 孙晨曦
    20200306(ABC)题解 by 孙晨曦
    20200305(DEF)题解 by 孙晨曦
    20200303(ABC)题解 by 王锐,董国梁
  • 原文地址:https://www.cnblogs.com/xiaohualu/p/11810535.html
Copyright © 2011-2022 走看看