vendredi 20 février 2015

Why store the points in a binary tree?



This question covers a software algorithm, from On topic


I am working on an interview question from Amazon Software Question, specifically

"Given a set of points (x,y) and an integer "n", return n number of points which are close to the origin"


Here is the sample high level psuedocode answer to this question, from Sample Answer

Step 1: Design a class called point which has three fields - int x, int y, int distance

Step 2: For all the points given, find the distance between them and origin

Step 3: Store the values in a binary tree

Step 4: Heap sort

Step 5: print the first n values from the binary tree


I agree with steps 1 and 2 because it makes sense in terms of object-oriented design to have one software bundle of data, Point, encapsulate away the fields of x, y and distance.Ensapsulation


Can someone explain the design decisions from 3 to 5?


Here's how I would do steps of 3 to 5

Step 3: Store all the points in an array

Step 4: Sort the array with respect to distance(I use some build in sort here like Arrays.Sort

Step 5: With the array sorted in ascending order, I print off the first n values


Why the author of that response use a more complicated data structure, binary tree and not something simpler like an array that I used? I know what a binary tree is - hierarchical data structure of nodes with two pointers. In his algorithm, would you have to use a BST?




Aucun commentaire:

Enregistrer un commentaire