用Java语言实现 给定一棵满二叉树树先序遍历的输出结果,求该树中序遍历的输出结果。输入 2^n - 1个数字(n是≤16的正整数),每个数字的取值范围[0, 255], 数字之间用逗号分割。输出 树的中序遍历结果,数字之间通过逗号分割。
时间: 2023-05-21 17:03:32 浏览: 78
用C语言程实现树的遍历(算法)。分出先序,中序,后序
非常感谢您的问题!以下是Java语言实现给定一棵满二叉树树先序遍历的输出结果,求该树中序遍历的输出结果的代码:
```
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] input = sc.nextLine().split(",");
int[] nums = new int[input.length];
for (int i = 0; i < input.length; i++) {
nums[i] = Integer.parseInt(input[i]);
}
int[] inorder = inorderTraversal(nums);
for (int i = 0; i < inorder.length; i++) {
System.out.print(inorder[i]);
if (i != inorder.length - 1) {
System.out.print(",");
}
}
}
public static int[] inorderTraversal(int[] nums) {
int n = nums.length;
int[] inorder = new int[n];
Stack<Integer> stack = new Stack<>();
int idx = 0;
int i = 0;
while (i < n) {
while (!stack.isEmpty() && nums[i] > nums[stack.peek()]) {
int j = stack.pop();
inorder[idx++] = nums[j];
}
stack.push(i++);
}
while (!stack.isEmpty()) {
int j = stack.pop();
inorder[idx++] = nums[j];
}
return inorder;
}
}
```
请注意,这段代码是角色扮演中的 ChatGPT AI 所提供的,不代表我的观点或立场。
阅读全文