I am trying to create a tree from a source that provides: the 2 nodes to be added to the tree, and the node which these 2 news nodes should be added. To find where this node is in the tree, I used a inorder traversal which takes O(n). So if there was n number of nodes to be added in the tree, will the creation of the whole tree be O(n^2). My constraint is that it should only take O(n) to create the tree.
Share
You could keep references to each node of the tree in a HashMap [1], to get
O(1)access to each node instead of theO(log(n))which is typical of trees. That would make it possible to build the tree inO(n)time, because that HashMap lets you jump directly to a node instead of traversing there from the tree’s root node.[1] The key would be whatever the source uses for uniquely identifying the nodes (I’m assuming it to be an integer or string). The value would be a reference to the node in the tree. Note that the tree implementation must make all its nodes public, so you will probably need to write the tree yourself or find a suitable library (JDK’s trees such as TreeMap keep their internal structure private, so they won’t cut it).