• 按之字形顺序打印二叉树


    题目

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

    分析

      使用两个栈去实现。奇数行使用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     }
  • 相关阅读:
    sql语句技巧
    逻辑查询处理的步骤
    left join 和 left outer join的区别
    SQL 笛卡尔积
    SQL 分类
    显示数据库中的表
    数据库备份 恢复
    增删主键及修改表名
    Securing Data笔记
    System Monitoring之"文件系统"
  • 原文地址:https://www.cnblogs.com/jiqianqian/p/7018325.html
Copyright © 2020-2023  润新知