/** * 题目; * 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 *解题思路: * 和上一篇不分行打印二叉树类似。 * 为了分行打印二叉树,需要两个变量,一个变量表示在当前层中打印的节点数, * 另一个变量表示下一层要打印节点的数目。 */ import java.util.ArrayList; public class P174_PrintBinaryTreeByBranch { ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) { //存放要打印的节点 ArrayList<TreeNode> temp = new ArrayList<>(); //存放返回的节点 ArrayList<ArrayList<Integer>> result = new ArrayList<>(); if (pRoot == null) { return result; } //记录当前打印节点的个数 int count; //记录下一行要打印的节点 int next; temp.add(pRoot); while (!temp.isEmpty()) { count = 0; next = temp.size(); ArrayList<Integer> List = new ArrayList<>(); while (count < next) { TreeNode node = temp.remove(0); List.add(node.val); count++; if (node.left != null) { temp.add(node.left); } if (node.right != null) { temp.add(node.right); } } result.add(List); } return result; } public static void main(String[] args) { TreeNode node1 = new TreeNode(8); TreeNode node2 = new TreeNode(6); TreeNode node3 = new TreeNode(10); TreeNode node4 = new TreeNode(5); TreeNode node5 = new TreeNode(7); TreeNode node6 = new TreeNode(9); TreeNode node7 = new TreeNode(11); node1.left=node2; node1.right = node3; node2.left = node4; node2.right = node5; node3.left = node6; node3.right = node7; P174_PrintBinaryTreeByBranch test = new P174_PrintBinaryTreeByBranch(); ArrayList<ArrayList<Integer>> result = test.Print(node1); System.out.print(result); } }
剑指offer:分行从上到下打印二叉树(java)
最新推荐文章于 2025-01-03 15:21:28 发布