扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
//他是把二叉树存在一个连式结构的queue队列里面了
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的襄城网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
public boolean judge() {
QueueBiTNodeAnyType q = new LinkedListBiTNodeAnyType();//建立一个队列用来存贮二叉树
int cnt = 0;//某个计数器
m = 0;
BiTNodeAnyType p = rootNode;//根节点 rootNode怎么获取的你没有写出来
if (p != null)//如果根节点不为空就在队列中先插入根节点
q.add(p);//这样子整个树就进入queue了
while (!q.isEmpty()) {//队列不为空,也就是开始插入东西了。的时候
System.out.println(q.element().data);//不解释
BiTNodeAnyType node = q.remove();//弹出一个数据 这里面应该会持有他的左边和右边对应的指针。
a[m++] = node;//扔数组中
BiTNodeAnyType leftChild = node.leftChild;//获取当前节点的左子节点
if (leftChild != null)//如果不为空
q.add(leftChild); //加入队列中
else
a[m++] = null;//否则,当前节点认为是空,放入数组中
BiTNodeAnyType rightChild = node.rightChild;//同理 右节点
if (rightChild != null)
q.add(rightChild);
else
a[m++] = null;//输出到这一步,数组中保存了根节点,以及第一层的状态
//中左右这种中序遍历,此时如果q下面还有东西,就继续。
//a[m]中保存的应该就是中序遍历下来的所有节点。
}
for (int i = 0; i m; i++) {//遍历a[m]
if (a[i] != null) {
if (a[i].leftChild == null a[i].rightChild != null) {//这里只判断左子树为空但是右边不为空的情况,
//貌似不会出现相反的情况? 就这样咯。。
return false;
} else {
cnt++;
}
}
}
System.out.println(cnt + " " + m);
if (cnt == this.countNode(rootNode)) {
return true;
}
return true;
}
java 中的List接口就是顺序存储的集合机构,底层是用数组实现的,检索性能高,插入和删除性能较低,因为涉及到移位。代码简单演示:
ListInteger list = new ArrayListInteger(); // 定义一个用于存放整数的集合list,
list.add(100);
list.add(200);
list.add(300); // 将100,200,300 一次加入到list中
System.out.println(list.toString()); // 查看结果
int a = list.get(0) ; // 这将找出list中的第一个元素100,赋值给a
System.out.println(a); // 100
list.remove(2); // 删除list中的第三个元素
System.out.println(list.toString()); // 查看结果
------------------------------------------------------------------------------------------------------
比较粗略,详细内容请查看ArrayList 的 API 。祝你学习进步。
package array;
class OrderArray{
private long[] a;
private int nElems;
public OrderArray(int maxSize){
a = new long[maxSize];
nElems = 0;
}
public void insert(long value){
int pos = 0;
for(pos=0;posnElems;pos++){
if(a[pos]value){
break;
}
}
for(int i=nElems;ipos;i--){
a[i] = a[i-1];
}
a[pos] = value;
nElems++;
}
public boolean delete(long value){
int pos = find(value);
if(pos!=-1){
for(int i=pos;inElems;i++){
a[i] = a[i+1];
}
nElems --;
return true;
}
return false;
}
public int find(long keySearch){
int lowerBound = 0;
int upperBound = nElems-1;
int curIn = 0;
while(true){
curIn = (lowerBound+upperBound)/2;
if(a[curIn]==keySearch){
return curIn;
}else if(lowerBoundupperBound){
return -1;
}else{
if(a[curIn]keySearch){
upperBound = curIn -1;
}else{
lowerBound = curIn +1;
}
}
}
}
public void display(){
for(int i=0;inElems;i++){
System.out.println(a[i]);
}
}
}
public class OrderArrayApp {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int maxSize = 100;
OrderArray orderArray = new OrderArray(maxSize);
orderArray.insert(1);
orderArray.insert(7);
orderArray.insert(9);
orderArray.insert(8);
orderArray.insert(6);
orderArray.insert(4);
orderArray.display();
orderArray.delete(8);
orderArray.display();
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流