[PAT]1020. Tree Traversals (25)@Java
来源:互联网 发布:编程的面向对像 编辑:程序博客网 时间:2024/05/22 10:53
1020. Tree Traversals (25)
Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order traversal sequence of the corresponding binary tree.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (<=30), the total number of nodes in the binary tree. The second line gives the postorder sequence and the third line gives the inorder sequence. All the numbers in a line are separated by a space.
Output Specification:
For each test case, print in one line the level order traversal sequence of the corresponding binary tree. All the numbers in a line must be separated by exactly one space, and there must be no extra space at the end of the line.
Sample Input:72 3 1 5 7 6 41 2 3 4 5 6 7Sample Output:
4 1 6 3 5 7 2
package go.jacob.day1016;import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;/** * 1020. Tree Traversals (25) * * @author Jacob * */public class Demo2 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] postorder = new int[n];int[] inorder = new int[n];for (int i = 0; i < n; i++)postorder[i] = sc.nextInt();for (int i = 0; i < n; i++)inorder[i] = sc.nextInt();Node root = rebuild(postorder, 0, n - 1, inorder, 0, n - 1);Queue<Node> queue = new LinkedList<Node>();queue.offer(root);ArrayList<Integer> res = new ArrayList<Integer>();while (!queue.isEmpty()) {Node node = queue.poll();res.add(node.value);if (node.left != null)queue.offer(node.left);if (node.right != null)queue.offer(node.right);}System.out.print(res.get(0));for (int i = 1; i < res.size(); i++) {System.out.print(" " + res.get(i));}sc.close();}private static Node rebuild(int[] postorder, int postLeft, int postRight, int[] inorder, int inLeft, int inRight) {//System.out.println("hhhhhhhhhhh:"+postLeft+" "+postRight+" "+inLeft+" "+inRight);if (postLeft > postRight)return null;Node root = new Node(postorder[postRight]);int index = 0;for (int i = inLeft; i <= inRight; i++) {if (inorder[i] == postorder[postRight])index = i;}int leftNum = index - inLeft;root.left = rebuild(postorder, postLeft, postLeft + leftNum - 1, inorder, inLeft, index - 1);root.right = rebuild(postorder, postLeft + leftNum, postRight - 1, inorder, index + 1, inRight);return root;}/* * 构造树节点类 */static class Node {public Node(int value) {this.value = value;}int value;Node left;Node right;}}
- [PAT]1020. Tree Traversals (25)@Java
- pat 1020. Tree Traversals (25)
- 【PAT】1020. Tree Traversals (25)
- PAT: 1020. Tree Traversals (25)
- PAT 1020. Tree Traversals(25)
- 【PAT】1020. Tree Traversals (25)
- [PAT]1020. Tree Traversals (25)
- PAT 1020. Tree Traversals (25)
- PAT 1020. Tree Traversals (25)
- pat 1020. Tree Traversals (25)
- PAT 1020. Tree Traversals (25)
- pat 1020. Tree Traversals (25)
- 【PAT】1020. Tree Traversals (25)
- pat 1020. Tree Traversals (25)
- PAT 1020. Tree Traversals (25)
- 1020. Tree Traversals (25) PAT+tree
- PAT Advanced Level 1020. Tree Traversals (25)(Java 实现)
- 【PAT】1020. Tree Traversals
- JavaScript对象
- Unity2D游戏入门教程(一)宝石迷阵(7)游戏结束
- 使用命令提示符注意事项
- 测试用例之QA有话说
- SpringBoot 表单验证
- [PAT]1020. Tree Traversals (25)@Java
- Java 创建对象、数组、调用方法、导入类的包
- linux基础(二)
- FPGA 时钟设计 1 —— 时钟资源总结
- java线程优先级
- js与h5的结合,初步学习。
- 485. Max Consecutive Ones
- 浅谈JVM(二)——内存分配和垃圾回收
- 深拷贝与浅拷贝