static BinaryTreeNode buildBinaryTree(char[] preOrder, char[] inOrder, int start, int end) { if (start > end) return null; BinaryTreeNode rootNode = new BinaryTreeNode(); rootNode.setData(preOrder[preIndex]); preIndex++; // System.out.println(rootNode.getData()); if (start == end) return rootNode; int dataIndex = search(inOrder, start, end, rootNode.getData()); if (dataIndex == -1) return null; // System.out.println("Left Bounds: "+start+" "+(dataIndex-1)); rootNode.setLeft(buildBinaryTree(preOrder, inOrder, start, dataIndex - 1)); // System.out.println("Right Bounds: "+(dataIndex+1)+" "+end); rootNode.setRight(buildBinaryTree(preOrder, inOrder, dataIndex + 1, end)); return rootNode; }
public static void levelTravesal(BinaryTreeNode node) { Queue queue = new LinkedList(); if (node == null) return; queue.offer(node); queue.offer(null); int level = 0; while (!queue.isEmpty()) { BinaryTreeNode temp = (BinaryTreeNode) queue.poll(); if (temp == null) { System.out.println("Level: " + level); if (!queue.isEmpty()) queue.offer(null); level++; } else { System.out.println(temp.data); if (temp.getLeft() != null) queue.offer(temp.getLeft()); if (temp.getRight() != null) queue.offer(temp.getRight()); } } }