剑指offer-按之字形顺序打印二叉树
生活随笔
收集整理的這篇文章主要介紹了
剑指offer-按之字形顺序打印二叉树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。 使用雙向鏈表,先把當前行按順序打印,再取出當前行并將下一行存入鏈表 1 public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {//樹 雙向鏈表 mytip 2 ArrayList<ArrayList<Integer>> re = new ArrayList<>(); 3 LinkedList<TreeNode> queue = new LinkedList<>(); 4 if(null==pRoot){ 5 return re; 6 } 7 queue.add(null); 8 queue.add(pRoot); 9 10 boolean flag = true; 11 while(queue.size()>1){//最后一個為null 12 TreeNode node = queue.poll();//當前不為null時,取出并將孩子結點存入鏈表 13 if(null==node){//當前為null是將鏈表中數打印 14 ArrayList<Integer> list = new ArrayList<>(); 15 Iterator<TreeNode> iter = null; 16 if(flag){ 17 iter = queue.iterator();//正向 18 }else{ 19 iter = queue.descendingIterator();//反向 20 } 21 while(iter.hasNext()){ 22 TreeNode n = iter.next(); 23 list.add(n.val); 24 } 25 if(queue.size()>0){ 26 queue.add(null); 27 } 28 re.add(list); 29 flag = !flag; 30 continue;//必須加 31 } 32 if(null!=node.left){ 33 queue.add(node.left); 34 } 35 if(null!=node.right){ 36 queue.add(node.right); 37 } 38 } 39 return re; 40 }?
轉載于:https://www.cnblogs.com/zhacai/p/10679898.html
總結
以上是生活随笔為你收集整理的剑指offer-按之字形顺序打印二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于luoguU67856 数列一题
- 下一篇: 【Oracle】RAC11gR2Grid