码迷,mamicode.com
首页 > 编程语言 > 详细

毕业了-java二叉树层次遍历算法

时间:2017-06-23 19:36:37      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:rgs   使用   com   void   技术分享   offer   move   stat   add   

/***************************************     
 * 时间:2017年6月23日      
 * author:lcy     
 * 内容:二叉树的层次遍历      
 * 需要借助队列这个数据结构,直接import就可以了
 *     1.首先将根节点放入队列中。 
       2.当队列为非空时,循环执行步骤3到步骤5,否则执行6; 
       3.出队列取得一个结点,访问该结点; 
       4.若该结点的左子树为非空,则将该结点的左子树入队列; 
       5.若该结点的右子树为非空,则将该结点的右子树入队列; 
       6.结束。
 ***************************************/    
import java.util.ArrayDeque;     
import java.util.Queue;    

public class BinTree {
    private char date;
    private BinTree lchild;   //左孩子
    private BinTree rchild;   //右孩子
    
    private BinTree(char c ){
        date = c;
    }
 
    
    public static void BFSOrder(BinTree T)
    {
        if(T==null) return ;
        Queue<BinTree> queue = new ArrayDeque<BinTree>();    
        //队列小知识:使用offer和poll优于add和remove之处在于它们返回值可以判断成功与否,而不抛出异常
    
        queue.offer(T);              //算法1:根结点进入队列
        while(!queue.isEmpty())      //算法2:若队列非空,循环执行步骤 3-5,否则执行步骤6
        {
            T=queue.poll();          //算法3:将一个结点出队列,并访问该结点
            System.out.print(T.date);
            if(T.lchild!=null)       //算法4:若该结点的左子树为非空,则将该结点的左孩子结点入队列;
                queue.offer(T.lchild);
            if(T.rchild!=null)       //算法5:若该结点的左子树为非空,则将该结点的右孩子结点入队列;
                queue.offer(T.rchild);    
        }
        //步骤6结束
    }
    
    
    
    public static void main(String[] args) {
         BinTree b1 = new BinTree(‘a‘);
         BinTree b2 = new BinTree(‘b‘);
         BinTree b3 = new BinTree(‘c‘);
         BinTree b4 = new BinTree(‘d‘);
         BinTree b5 = new BinTree(‘e‘);
         BinTree b6 = new BinTree(‘f‘);
         BinTree b7 = new BinTree(‘g‘);
    
        /**
         *      a 
         *    /            *   b     c
         *  / \   /          * d   e f   g
         */
        b1.lchild = b2;
        b1.rchild = b3;
        b2.lchild = b4;
        b2.rchild = b5;
        b3.lchild = b6;
        b3.rchild = b7;
        System.out.println(12121);

        BinTree.BFSOrder(b1);
        System.out.println();    
        }
}
测试结果
技术分享

 

 

 

毕业了-java二叉树层次遍历算法

标签:rgs   使用   com   void   技术分享   offer   move   stat   add   

原文地址:http://www.cnblogs.com/cs-lcy/p/7071117.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!