如何建立二叉树和遍历二叉树?
这个二叉树我整了一段时间了,因为考试好多,就一直没有完成。现在应该搞做压缩了,有些同学都已经做完了,我还没有开始,有一点小小的急,不过,我还是要顾全大局,万一学校的课挂了,我又要折磨一个假期补考,不能安心做通信部分,划不来啊。不过我会慢慢的做的。不能跟强手比啊,“人人比人,气死人啊!”只要对得起自己就够了。
下面就对二叉树做一下总结。
二叉树是一种树形结构,它的特点是:每个结点至多只有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()+" ");?
运行结果: