标签: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(); } }
测试结果
标签:rgs 使用 com void 技术分享 offer move stat add
原文地址:http://www.cnblogs.com/cs-lcy/p/7071117.html