zoukankan      html  css  js  c++  java
  • 《程序员代码面试指南》第三章 二叉树问题 二叉树按层打印和ZigZag打印

    题目

    二叉树按层打印和ZigZag打印
    

    java代码

    package com.lizhouwei.chapter3;
    
    import java.util.LinkedList;
    import java.util.Queue;
    
    /**
     * @Description:二叉树按层打印和ZigZag打印
     * @Author: lizhouwei
     * @CreateDate: 2018/4/14 21:47
     * @Modify by:
     * @ModifyDate:
    */
    public class Chapter3_9 {
        public void levelPrint(Node head){
            if(head==null){
                return;
            }
            Queue<Node> queue = new LinkedList<Node>();
            queue.offer(head);
            System.out.print("level1:");
            Node nlast =null;
            Node last=head;
            int level= 1;
            while (!queue.isEmpty()){
                 head = queue.poll();
                System.out.print(head.value+" ");
                if(head.left!=null){
                     queue.offer(head.left);
                     nlast = head.left;
                 }
                 if(head.right!=null){
                     queue.offer(head.right);
                     nlast  = head.right;
                 }
                if(last ==head&& !queue.isEmpty()){
                    last = nlast;
                    System.out.println();
                    System.out.print("level"+(++level)+":");
                }
            }
        }
    
        public void zigZagPrint(Node head){
            if (head==null){return;}
            LinkedList<Node> dqueue = new LinkedList<Node>();
            dqueue.offerFirst(head);
            boolean lr = true;
            Node nlast =null;
            Node last=head;
            int level=1;
            System.out.print("level1:");
            while (!dqueue.isEmpty()){
                if(lr){
                    head  =dqueue.pollFirst();
                    if(head.left!=null){
                        dqueue.offerLast(head.left);
                        nlast= nlast==null? head.left:nlast;
                     }
                    if(head.right!=null){
                        dqueue.offerLast(head.right);
                        nlast= nlast==null? head.right:nlast;
                    }
                }else{
                    head  =dqueue.pollLast();
                    if(head.right!=null){
                        dqueue.offerFirst(head.right);
                        nlast= nlast==null?head.right:nlast;
                    }
                    if(head.left!=null){
                        dqueue.offerFirst(head.left);
                        nlast= nlast==null?head.left:nlast;
                    }
                }
                System.out.print(head.value+" ");
    
                if(last==head && !dqueue.isEmpty()){
                    last =nlast;
                    nlast =null;
                    lr =!lr;
                    System.out.println();
                    System.out.print("level"+(++level)+":");
    
                }
            }
    
        }
        //测试
        public static void main(String[] args) {
            Chapter3_9 chapter = new Chapter3_9();
            int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
            Node head = NodeUtil.generTree(arr, 0, arr.length - 1);
    
    
            System.out.println("层打印");
            chapter.levelPrint(head);
            System.out.println("
    ");
            System.out.println("ZigZag打印");
            chapter.zigZagPrint(head);
        }
    }
    

    结果

  • 相关阅读:
    处理键盘弹出
    纯手码自动布局
    ios 随机色 宏定义
    linux下自定义pid实现任意数据采集
    http://blog.chinaunix.net/uid-9845710-id-1996675.html snmpd配置
    http://www.360doc.com/content/10/0928/12/11991_57014502.shtml
    pingall脚本
    http://lihuipeng.blog.51cto.com/3064864/643960
    elf 文件
    php中获取周几的方法
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/8836149.html
Copyright © 2011-2022 走看看