Algorithm:
Initialize: array of size equal to height of BT. let say arr[height()] /*height of tree is equal to max number of levels in tree*/Call Method with signature:int[] arr = new int[height()];printAllPath(root, arr, 0);/*printPathsRecur traverses nodes of tree in preorder */ printPathsRecur(tree, path[], level)1) If node is null then return;push data to path array: arr[level] = node->data.2) If node is a leaf node then print the path array. return;3) a) Call printPathsRecur for left subtree printPathsRecur(node->left, path, level+1) b) Call printPathsRecur for right subtree. printPathsRecur(node->right, path, level+1)
Example:
static void printAllPath(Node root, int[] arr, int level){
if(root == null) return;
arr[level] = root.data;
if(root.left == null && root.right == null)
{
printPath(arr, 0, level);
return;
}
printAllPath(root.left, arr, level+1);
printAllPath(root.right, arr, level+1);
}
private static void printPath(int[] arr, int l, int level) {
for(int i = l; i <= level; i++)
System.out.print(arr[i]+", ");
System.out.println();
}
No comments:
Post a Comment