`
张小芳
  • 浏览: 34290 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论

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

阅读更多

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

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

二叉树是一种树形结构,它的特点是:每个结点至多只有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;}
					else	parent=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()+"  ");
 


运行结果:

  • 大小: 4.3 KB
分享到:
评论
1 楼 zhuchao_ko 2011-06-14  

相关推荐

Global site tag (gtag.js) - Google Analytics