根据先序遍历和中序遍历,打印层序遍历
来源:互联网 发布:胡琳 知乎 编辑:程序博客网 时间:2024/06/05 02:31
import java.util.*;class Node{public int data; public Node left; public Node right; public Node(){} public Node(int data){ this.data = data; this.left = null; this.right = null; }}public class Main{public static void main(String[] args){ Scanner in = new Scanner(System.in); int n = in.nextInt(); int[] preOrder = new int[n]; int[] inOrder = new int[n]; for(int i=0;i<n;i++){ preOrder[i] = in.nextInt(); } for(int i=0;i<n;i++){ inOrder[i] = in.nextInt(); } Node root = initTree(preOrder,0,preOrder.length-1,inOrder,0,inOrder.length-1); layerTraverse(root); } public static Node initTree(int[] preOrder,int start1,int end1,int[] inOrder,int start2,int end2){if(start1 > end1 || start2 > end2) return null; int rootData = preOrder[start1]; Node root = new Node(rootData); int rootIndex = findIndexInArray(inOrder,rootData,start2,end2); int offset = rootIndex - start2 -1; Node left = initTree(preOrder,start1+1,start1+1+offset,inOrder,start2,start2+offset); Node right = initTree(preOrder,start1+offset+2,end1,inOrder,rootIndex+1,end2); root.left = left; root.right = right; return root;} public static int findIndexInArray(int[] a,int x,int begin,int end){for(int i=begin;i<=end;i++){ if(a[i] == x) return i; } return -1;} public static void layerTraverse(Node root){ if(root == null) return; Queue<Node> nodeQue = new LinkedList<Node>(); nodeQue.add(root); while(!nodeQue.isEmpty()){ Node p = nodeQue.poll(); System.out.print(p.data + " "); if(p.left != null) nodeQue.add(p.left); if(p.right != null) nodeQue.add(p.right); } }}
0 0
- 根据先序遍历和中序遍历,打印层序遍历
- 根据后续和中序遍历输出先序遍历
- 根据中序遍历和后序遍历求二叉树的先序遍历
- 根据中序遍历和先序遍历,后序遍历创建二叉树。
- 根据先序遍历和中序遍历求后续遍历
- 根据先序遍历和中序遍历结果求后续遍历模板
- 先序遍历和中序遍历求后序遍历
- 已知先序遍历和中序遍历求后序遍历
- 已知先序遍历和中续遍历求后序遍历
- 先序建树,中序遍历、层序遍历
- 根据先序和中序遍历重建二叉树
- 根据后序遍历和中序遍历求先序遍历
- 根据前序遍历和中序遍历求后序遍历
- 数据结构课设 根据后序和中序遍历输出先序遍历
- 【二叉树】 根据先序和中序遍历输出后序遍历
- 根据二叉树的先序和中序遍历求出其后序遍历
- 根据后序和中序遍历输出先序遍历
- 根据后序和中序遍历输出先序遍历
- Mac下安装配置Homebrew图文教程
- resource处理动态数据交互
- k8s安装
- 【laravel】laravel的下载&安装
- 算法/动态规划/LongestCommonSubstring最长公共子串问题
- 根据先序遍历和中序遍历,打印层序遍历
- DOM对象
- H5基础知识第六课时(CSS)1
- SSL 2289——庆功会
- Logback和Logstash的集成
- CentOS下升级Git1.7.1升级到Git2.2.1
- NSOJ 大数阶乘
- JavaScript之值类型和引用类型的区别
- 《我的Angular入坑记》——通过小例子看ng-repeat