关于二叉树的理解:
定义:首先,对于数据结构中的树而言,树是由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无右孩子。
用处:利用完全二叉树的性质,可以将一些数据编辑成有规律的或者说我们想编辑的序列,便于研究使用和处理数据。