zoukankan      html  css  js  c++  java
  • 按之字形顺序打印二叉树

    题目描述:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。

    实现语言:Java

    import java.util.ArrayList;
    import java.util.LinkedList;
    /*
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
        }
    }
    */
    public class Solution {
        public ArrayList<ArrayList<Integer> > Print(TreeNode root) {
            ArrayList<ArrayList<Integer>> res=new ArrayList<ArrayList<Integer>>();
            if(root==null){
                return res;
            }
            ArrayList<Integer> list=new ArrayList<Integer>();
            LinkedList<TreeNode> que=new LinkedList<TreeNode>();
            que.offer(root);
            int curNode=1;
            boolean leftToRight=true;
            while(!que.isEmpty()){
                root=que.poll();
                --curNode;
                if(root.left!=null){
                    que.offer(root.left);
                }
                if(root.right!=null){
                    que.offer(root.right);
                }
                list.add(root.val);
                if(curNode==0){
                    curNode=que.size();
                    if(leftToRight){
                        res.add(list);
                    }else{
                        res.add(reverseList(list));
                    }
                    leftToRight=!leftToRight;
                    list=new ArrayList<Integer>();
                }
            }
            return res;
        }
        private ArrayList<Integer> reverseList(ArrayList<Integer> list){
            int len=list.size();
            ArrayList<Integer> res=new ArrayList<Integer>();
            for(int i=len-1;i>=0;--i){
                res.add(list.get(i));
            }
            return res;
        }
    }
    
  • 相关阅读:
    libevent网络编程汇总
    LibEvent代码阅读--多缓冲区和零拷贝技术
    几个第三方库发图片
    Libevent使用例子,从简单到复杂
    CImage得到位图的大小
    从位图数据取得位图句柄
    BMP格式详解
    如何将内存中的位图数据绘制在DC上
    C++加载位图跟SOCKET通信的编写
    11235
  • 原文地址:https://www.cnblogs.com/xidian2014/p/10201715.html
Copyright © 2011-2022 走看看