Different Node Deletion/Insertion in a Binary Search Tree

Click For Summary
The discussion centers on the implications of using a pointer to a node's successor instead of its parent in a binary search tree. While searching remains unchanged, insertion and deletion processes would require adjustments to accommodate the need for finding both the successor and predecessor of nodes. The proposed pseudocode for finding the predecessor demonstrates that this operation could take O(n) time, as it involves traversing the tree to locate the least element and then finding the desired node's predecessor. This raises concerns about the efficiency of insertion and deletion, which would theoretically take at least Ω(n) time, contradicting established expectations of O(h) time as noted in Cormen's textbook. However, further discussion reveals that the predecessor method can be optimized to O(h), allowing both insertion and deletion to also operate within O(h) time. The conversation references Knuth's work and other algorithm resources, indicating that the topic is well-covered in literature.
mooncrater
Messages
215
Reaction score
18
What happens, if instead of having any pointer pointing to a node's parent, we had pointer pointing to the node's successor? We know, that Searching would remain the same. But in my opinion Insertion and Deletion would change. This would happen, because in insertion, we would be needed to find the successor and predecessor of the inserted node, and changing information accordingly. And in Deletion, we would be needed to re-align the successor value of the predecessor of the deleted element.
This shows the dependency of both the modified methods on finding the predecessor of the inserted/deleted element. My pseudocode for finding the predecessor is:
Code:
Predecessor(T,x)
1. y= T.root
2. while y.left_child ! = NULL
3.            y = y.left_child
4. while y.succ ! = x
5.           y = y.succ
6.return y
Here, lines 2-3 find the least element of the tree, and lines 4-5 find the element whose successor is ##x##(where ##x## is the pointer to the desired node.)
As we can see, that lines 4-5 take ##O(n)## time, (where ##n## is the total number of elements) instead of ##O(h)## time.(where ##h## is the height of the tree) .
This being said, leads to a conclusion that both the methods INSERT and DELETE would take atleast ##\Omega (n)## time. But according to a question in cormen(12.3-5) [https://github.com/yaoshengzhe/notes/blob/master/clrs/12_binary_search_trees.md] , it should be ##O(h)##.
So where am I wrong?
Any help is appreciated with a lot of thankfulness. :P
Moon.
 
Last edited by a moderator:
Technology news on Phys.org
Doesn't Knuth. Volume 3, discuss this?
 
  • Like
Likes mooncrater
The github link didn't work for me, but the description sounds like a 'threaded binary search tree'.
 
  • Like
Likes mooncrater
@anorlunda - Yup - Knuth does cover that. So does Cormen, so does Sedgewick in Algorithms in C Parts 1 - 4. All of which are wonderful resources!
 
  • Like
Likes mooncrater
Thanks for you people replying out there. I just got the answer, and well, it's simple ( and a little embarrassing too!). My predecessor method isn't optimal. It can be made in ##O(h)##. So We can get INSERT and DELETE to work in ##O(h)##.
Thanks.
Moon.
 
1477394289968.jpg

This might suffice.
 
Learn If you want to write code for Python Machine learning, AI Statistics/data analysis Scientific research Web application servers Some microcontrollers JavaScript/Node JS/TypeScript Web sites Web application servers C# Games (Unity) Consumer applications (Windows) Business applications C++ Games (Unreal Engine) Operating systems, device drivers Microcontrollers/embedded systems Consumer applications (Linux) Some more tips: Do not learn C++ (or any other dialect of C) as a...

Similar threads

  • · Replies 13 ·
Replies
13
Views
4K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 10 ·
Replies
10
Views
3K
  • · Replies 11 ·
Replies
11
Views
3K
  • · Replies 3 ·
Replies
3
Views
2K
Replies
14
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
22K
  • · Replies 2 ·
Replies
2
Views
2K