把二叉树打印成多行

xiaoxiao2021-02-28  115

题目:

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

思路:

二叉树的层次遍历,然后将每一层的结点单独打印到一行。

代码:

import java.util.ArrayList; import java.util.Queue; 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 { ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer> > result = new ArrayList<ArrayList<Integer> >(); if(pRoot == null) return result; Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.offer(pRoot); int nextLevel = 0;//下一层有多少个结点 int toBePrinted = 1;//目前打印的结点还剩多少个 ArrayList<Integer> temp = new ArrayList<Integer>(); while(!queue.isEmpty()){ TreeNode pNode = queue.poll(); temp.add(pNode.val); if(pNode.left != null){ queue.offer(pNode.left); ++ nextLevel; } if(pNode.right != null){ queue.offer(pNode.right); ++ nextLevel; } --toBePrinted; if(toBePrinted == 0){ result.add(temp); temp = new ArrayList<Integer>(); toBePrinted = nextLevel; nextLevel = 0; } } return result; } }
转载请注明原文地址: https://www.6miu.com/read-42814.html

最新回复(0)