首页 > 代码库 > 毕业了-java二叉树层次遍历算法
毕业了-java二叉树层次遍历算法
/*************************************** * 时间: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二叉树层次遍历算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。