Question: JAVA: I got code: import java.util.Scanner; class Node { char ch; Node left, right; } class Decode { Node root; StringBuilder sb = new StringBuilder();
JAVA:
I got code:
import java.util.Scanner; class Node { char ch; Node left, right; } class Decode { Node root; StringBuilder sb = new StringBuilder(); public Decode(String preOrder) { root = buildTree(preOrder); } public Node buildTree(String preOrder) { return buildTree(preOrder, 0, preOrder.length()); } public Node buildTree(String preOrder, int start, int end) { if (start >= end) { return null; } Node node = new Node(); char ch = preOrder.charAt(start); node.ch = ch; if (ch == '*') { int i = start + 1; while (i < end && preOrder.charAt(i) == '*') { i++; } node.left = buildTree(preOrder, i, end); node.right = buildTree(preOrder, i + 1, end); } return node; } public void decode(String message) { Node node = root; for (char ch : message.toCharArray()) { if (node == null) { break; } node = ch == '0' ? node.left : node.right; if (node != null && node.left == null && node.right == null) { sb.append(node.ch); node = root; } } } public String getDecodedMessage() { return sb.toString(); } } class DecodeMessage { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // Read preOrder string from input String preOrder = scanner.nextLine(); // Read compressed message from input String message = scanner.nextLine(); Decode decoder = new Decode(preOrder); decoder.decode(message); String decodedMessage = decoder.getDecodedMessage(); System.out.println("Decoded message: " + decodedMessage); } }
Expected output: abracadabra!
As i know:
preorder: *a**!*dc*rb
message: 0111110010110101001111100100
but all the time i receive output: acda!d!!acda!a
Or provide clarify what and how should be inputted preorder or anything suggestable
So, fix this situation please, confused :(
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
