Given a complete binary tree, convert it to an array and vice versa. int[] binTree2Array(Node n) { int[] ret = new int[getBinTreeNodeCount(n) + 1]; // Skipping index 0 for simplicity binTree2ArrayWorker(n, ret, 1); return ret; } void binTree2ArrayWorker(Node n, int[] arr, int i) { if (n == null || i > arr.Length - 1) return; arr[i] = n.val; binTree2ArrayWorker(n.left, arr, i * 2); binTree2ArrayWorker(n.right, arr, i * 2 + 1); } Node array2BinTree(int[] arr, int i) { if (i > arr.Length - 1) return null; Node n = new Node(arr[i]); n.left = array2BinTree(arr, i * 2); n.right = array2BinTree(arr, i * 2 + 1); return n; } |
Trees and Graphs >