题解 | #二叉搜索树的后序遍历序列#

按之字形顺序打印二叉树

http://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0

两个栈,一个存放基数行,一个存放偶数行

基数行的节点,将其 左节点,右节点  依次加入到偶数列栈中
偶数行的节点,将其 右节点,左节点  依次加入到基数列栈中

package com.yzcOfffer.JZ77;


import java.util.ArrayList;
import java.util.Stack;

/**
 * @author YZC
 * @date 2021/12/5 20:56
 */
class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
 public  class Solution {

     public static void main(String[] args) {
         TreeNode node1 = new TreeNode(1);
         TreeNode node2 = new TreeNode(2);
         TreeNode node3 = new TreeNode(3);
         TreeNode node4 = new TreeNode(4);
         TreeNode node5 = new TreeNode(5);
         node1.left = node2;
         node1.right = node3;
         node3.left = node4;
         node3.right = node5;
         System.out.println(Print(node1));
     }


     public static ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
         //之字形顺序打印二叉树
         ArrayList<ArrayList<Integer>> res=new ArrayList<>();
         if(pRoot==null)
             return res;
         Stack<TreeNode> stack1=new Stack<>();
         Stack<TreeNode> stack2=new Stack<>();
         stack1.push(pRoot);
         while(!stack1.isEmpty() || !stack2.isEmpty()){
             ArrayList<Integer> list=new ArrayList<>();
             if(!stack1.isEmpty()){
                 while(!stack1.isEmpty()){
                     TreeNode temp=stack1.pop();
                     list.add(temp.val);
                     if(temp.left!=null)  //先左后右
                         stack2.push(temp.left);
                     if(temp.right!=null)
                         stack2.push(temp.right);
                 }
             }else{
                 while(!stack2.isEmpty()){
                     TreeNode temp=stack2.pop();
                     list.add(temp.val);
                     if(temp.right!=null)   //先右后左
                         stack1.push(temp.right);
                     if(temp.left!=null)
                         stack1.push(temp.left);
                 }
             }
             res.add(list);
         }
         return res;
     }
 }



全部评论

相关推荐

nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
仁者伍敌:牛子这些人还会点一个自动回复,boss都不带回复的
点赞 评论 收藏
分享
07-11 15:12
门头沟学院 Java
别人在上班,我就在工位上看看视频啥的,这正常吗?
程序员小白条:实习就是摸鱼,只是公司指标,把你进来了,可能那时候客户很多,但等你进来的时候,已经是淡季了,根本没多少需求,或者说根本不适合实习生去完成,因此你就每天干坐着就行,可能1,2个月都没需求
实习生的蛐蛐区
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务