按之字形顺序打印二叉树
Posted xidian2014
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按之字形顺序打印二叉树相关的知识,希望对你有一定的参考价值。
题目描述:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
实现语言: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; } }
以上是关于按之字形顺序打印二叉树的主要内容,如果未能解决你的问题,请参考以下文章