二叉树的理解

来源:互联网 发布:java中的有参构造方法 编辑:程序博客网 时间:2024/05/16 01:40

关于二叉树的理解: 

   定义:首先,对于数据结构中的树而言,树是由n(n>=1)个有限节点组成一个具有层次关系的集合,而二叉树是每个父节点最多有两个子节点的树,说白了树是从根节点从下蔓延的一类有层次的集合,而这种集合是以以节 点形式存在的

    价值:或者说二叉树存在的意义,二叉树是一种具有一定的规律,有序,他的左子树和右子树都是按照一定的顺序来安排的,树的分类分为有序树和无序树,我们所去研究的都是一些有序的,即有一点规律和研究的事物,否则一切的都没有意义了,其实所有的关于树的解释,都是从节点包装开始的,也就是所有的树都是基于Node类型的,所以我在这里给的代码是属于节点这一块的

package List;public class Licklist {//创建一个新的链表当做头节点private Node  first =new Node();    private int length=0;    public void add(String v){    //验证下标越界问题,这个没有越界问题    Node node=new Node();    node.value=v;    Node Nownode=first;    while(Nownode.next!=null){    Nownode=Nownode.next;    }    Nownode.next=node;     length++;    }    public void delete(int index){    //验证下标越界问题    if(index<0||index>length){        try {throw new Exception("下标越界");} catch (Exception e) {e.printStackTrace();}    }    int code=0;    Node Nownode=first;    while(code!=index){    Nownode = Nownode.next;    code++;    }    Nownode.next=Nownode.next.next;    length--;    }    public String get(int index){    //验证下标越界问题    if(index<0||index>length){        try {throw new Exception("下标越界");} catch (Exception e) {e.printStackTrace();}    }    //重新定义成链表的形式//    Node node=new Node();//    node.value=v;    int code=0;    Node Nownode=first.next;    while(code!=index){    Nownode=Nownode.next;    code++;    }    return Nownode.value;    }    public void update(int index,String v){    //验证下标越界问题    if(index<0||index>length){            try {    throw new Exception("下标越界");    } catch (Exception e) {    e.printStackTrace();    }        }    //定义成node类型    Node node=new Node();    node.value=v;    int code=0;    Node Nownode=first;    while(code!=index){    Nownode=Nownode.next;    code++;    }    node.next=Nownode.next.next;    Nownode.next=node;    }    public void insert(int index,String v){    //验证下标越界问题    if(index<0||index>length){            try {    throw new Exception("下标越界");    } catch (Exception e) {    e.printStackTrace();    }        }    //定义成node类型    Node node=new Node();    node.value=v;    int code=0;    Node Nownode=first;    while(code!=index){    Nownode=Nownode.next;    code++;    }    node.next=Nownode.next;    Nownode.next=node;    length++;    }    public int size(){    return length;    }}

      完全二叉树性质:一:若根结点的层次为1,则二叉树第i层最多有2的(i-1)次方个结点。

                                      二:在高度为k的二叉树中,则最多有2k-1个结点(k≥0)

                                      三: 设一棵二叉树节点个数为n,则父节点个数为n/2。

                                      四:一棵具有n个结点的完全二叉树,对序号为i(0≤i0,则i的父母结点序号为:若2i+1<n,则i的左孩子结点序号为2i+1;否则i无左孩子。

                                                                                                                                                                                  若2i+2<n,则i的右孩子结点序号为2i+2;否则i无右孩子。

用处:利用完全二叉树的性质,可以将一些数据编辑成有规律的或者说我们想编辑的序列,便于研究使用和处理数据。








0 0