首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

怎么建立二叉树和遍历二叉树

2012-10-24 
如何建立二叉树和遍历二叉树?这个二叉树我整了一段时间了,因为考试好多,就一直没有完成。现在应该搞做压缩

如何建立二叉树和遍历二叉树?

这个二叉树我整了一段时间了,因为考试好多,就一直没有完成。现在应该搞做压缩了,有些同学都已经做完了,我还没有开始,有一点小小的急,不过,我还是要顾全大局,万一学校的课挂了,我又要折磨一个假期补考,不能安心做通信部分,划不来啊。不过我会慢慢的做的。不能跟强手比啊,“人人比人,气死人啊!”只要对得起自己就够了。

下面就对二叉树做一下总结。

二叉树是一种树形结构,它的特点是:每个结点至多只有2棵子树。一棵是左子树,一棵是右子树,位置不能颠倒。

看看我构建的二叉树。

给定一组数据:40 ?7 ?3 ?9 ?37 ?1 ?45 ?52 ?90 ?0?

以40为根结点,创建二叉树,左孩子要小于父结点,右孩子大于等于父结点

?

将数组中的数据加入二叉树中构建一棵二叉树

?

int[] a={40,7,3,9,37,1,45,52,90,0};        for(int i=0;i<a.length;i++){        root=b.add(a[i]);        }

?

public MyNode add(int obj){int n=(int) obj;if(root==null){dep++;root=new MyNode(obj,dep);parent=root;}else{dep++;parent=root;boolean a=true; while(a){if(parent.getobj()>obj) {//如果数字小于父结点的数据,并且左孩子为空作为左孩子,否则,右孩子为空,作为右孩子if(parent.getl()==null){ MyNode node=new MyNode(obj,parent.getdep()+1);parent.setl(node);a=false;}else  parent=parent.getl();}else{if(parent.getr()==null) {MyNode node=new MyNode(obj,parent.getdep()+1);parent.setr(node);a=false;}elseparent=parent.getr();}}}return root;}
?

遍历二叉树时, 我吧把下面方法里面加了一个while()循环,导致了死循环,害的电脑运行速度慢的要是,字都半天大不出一个,苦恼的要死。

?

先序遍历二叉树。

?public void getindex( MyNode node){

 if(node!=null) System.out.print(node.getobj()+" depth:"+ node.getdep()+"  ");     if(node.getl()!=null ) getindex(node.getl());     if(node.getr()!=null )getindex(node.getr());}

?

?

?

//中序遍历public void getindex1( MyNode node){     if(node.getl()!=null ) getindex1(node.getl()); if(node!=null) System.out.print(node.getobj()+" depth:"+ node.getdep()+"  ");     if(node.getr()!=null )getindex1(node.getr());}
?

?

//后序遍历public void getindex2( MyNode node){     if(node.getl()!=null ) getindex2(node.getl());     if(node.getr()!=null )getindex2(node.getr()); if(node!=null) System.out.print(node.getobj()+" depth:"+ node.getdep()+"  ");
?


运行结果:
怎么建立二叉树和遍历二叉树

热点排行