根据前序和中序构建二叉树
来源:互联网 发布:java安装教程 编辑:程序博客网 时间:2024/06/05 18:20
题目:
根据二叉树的前序遍历和中序遍历构建二叉树,并进行层序遍历输出结果。
代码:
import java.util.*;//节点class Node { int val; Node left; Node right; Node(int val) { this.val = val; }}public class Main { // 递归构建树 public static Node CreateTree(int[] front, int[] back) { int len = front.length; if (len == 0) return null; Node head = new Node(front[0]); // 寻找中序的根节点 int index = 0; for (int i = 0; i < len; i++) { if (front[0] == back[i]) { index = i; break; } } // 拆分2个数组 int[] frontLeft = Arrays.copyOfRange(front, 1, index + 1); int[] frontRight = Arrays.copyOfRange(front, index + 1, len); int[] backLeft = Arrays.copyOfRange(back, 0, index); int[] backRight = Arrays.copyOfRange(back, index + 1, len); head.left = CreateTree(frontLeft, backLeft); head.right = CreateTree(frontRight, backRight); return head; } public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) { int n = in.nextInt(); int[] front = new int[n]; int[] back = new int[n]; for (int i = 0; i < n; i++) front[i] = in.nextInt(); for (int i = 0; i < n; i++) back[i] = in.nextInt(); Node head = CreateTree(front, back); // 层序遍历树 //使用队列来存储 Queue<Node> queue = new LinkedList<Node>(); queue.add(head); int[] result = new int[n]; int k = 0; while (queue.size() != 0) { Node visitedNode = queue.remove(); result[k] = visitedNode.val; k++; if (visitedNode.left != null) queue.add(visitedNode.left); if (visitedNode.right != null) queue.add(visitedNode.right); } //输出结果 for (int i = 0; i < n - 1; i++) { System.out.print(result[i] + " "); } System.out.print(result[n - 1]); } }}
0 0
- 根据前序和中序,构建二叉树
- 根据中序和前序遍历构建二叉树
- 根据前序和中序构建二叉树
- 根据二叉树的前序和中序构建二叉树
- 根据前序 中序 后序 构建二叉树
- 根据前序遍历,中序遍历构建二叉树
- 根据前序、中序构建二叉树
- 根据前序和后序构建二叉树
- 剑指offer 面试题6 (根据前序和中序 构建二叉树)
- 根据前序遍历和中序遍历构建二叉树
- Offer题6 根据前序和中序构建二叉树
- 剑指offer04--根据前序和中序构建二叉树
- 根据中序遍历和前序遍历构建二叉树
- 面试题6:根据前序和中序序列构建二叉树(Leetcode-106)
- 二叉树系列——根据前序和中序、中序和后序构建二叉树
- 根据前序遍历和中序遍历构建二叉树以及根据中序遍历后序遍历构建二叉树
- 根据二叉树的前序遍历和中序遍历构建二叉树的c语言完整代码
- 根据树的后序和中序序列或者前序和中序序列构建二叉树,
- POJ 1143 (记忆化搜索,状态压缩,博弈论记忆化搜索实现)
- HDU 1016
- JSONP解决跨域访问数据问题
- SDOI2017 Round1 解题报告
- 设计模式-模板方法模式
- 根据前序和中序构建二叉树
- 【SSH进阶之路】Hibernate映射——一对一单向关联映射(五)
- 微信支付篇
- OpenCV2:Mat属性
- 基本类型和引用类型的区别
- 链表的有序集合
- 【SSH进阶之路】Hibernate映射——一对一双向关联映射(六)
- A simple math problem 【矩阵快速幂】
- 【计算机系统结构】 流水线技术-标量