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

    题目

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

    分析

      使用两个栈去实现。奇数行使用stack1,偶数行使用stack2。

         注,使用stack1时,按照左右的顺序存储;使用stack2时,按照右左的顺序存储

    代码

     1     ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
     2         ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
     3         if(pRoot==null)
     4             return list;
     5         Stack<TreeNode> stack1 = new Stack<TreeNode>();
     6         Stack<TreeNode> stack2 = new Stack<TreeNode>();
     7         stack1.add(pRoot);
     8         while(!stack1.empty() || !stack2.empty()){
     9             ArrayList<Integer> li = new ArrayList<Integer>();
    10             if(!stack1.empty()){
    11                 while(!stack1.empty()){
    12                     TreeNode node = stack1.pop();
    13                     li.add(node.val);
    14                     if(node.left!=null)
    15                         stack2.add(node.left);
    16                     if(node.right!=null)
    17                         stack2.add(node.right);
    18                 }
    19                 list.add(li);
    20             }
    21             else if(!stack2.empty()){
    22                 while(!stack2.empty()){
    23                     TreeNode node = stack2.pop();
    24                     li.add(node.val);
    25                     if(node.right!=null)
    26                         stack1.add(node.right);
    27                     if(node.left!=null)
    28                         stack2.add(node.left);
    29                 }
    30                 list.add(li);
    31             }
    32         }
    33         return list;
    34     }
  • 相关阅读:
    函数与宏定义实验报告
    C语言作业3
    循环结构课后反思
    C语言作业2
    C程序设计实验报告
    百分制成绩五级分制输出--二次作业
    第九章 结构体与共用体
    第八章 指针实验
    第七章 数组实验
    第六章 函数和宏定义实验(2)
  • 原文地址:https://www.cnblogs.com/jiqianqian/p/7018325.html
Copyright © 2011-2022 走看看