Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I have a computer science degree from 10 years ago and I couldn't tell you how to implement one. I vaguely know the general principles but I'd have to sit down and start from scratch on how to implement one.

Why? The only time I knowingly used them is with database indices. For everything else I do, they are an unnecessary implementation detail. It doesn't matter what Ruby's Set uses.



People who make this comment, I generally don't believe you, or don't believe you have done any programming. If I put a gun to your head and give you an hour, you can't make a node that points to two other nodes of the same type?

If you really can't, you should get familiar with how data can point to other data, it is fundamental and done all the time.


> If I put a gun to your head and give you an hour, you can't make a node that points to two other nodes of the same type?

It's easy to make an imbalanced binary tree.

I once decided that building a binary tree based only on a friend's explanation of how they worked; it seemed like it would be a good learning exercise for myself (I don't have a CS degree). It was like 10 minutes of coding to get it minimally working & tested, but then I had to work out all of the different rotations to make it a balanced binary tree (I don't know that an imbalanced binary tree is ever actually useful, as it could just work out to be a slower linked-list in the worst case scenario).

I did it once, took me a little while, but I don't know that I could do it again without having to reexamine all of the different cases that result in imbalance and the rotations that respond to each.


Binary search tree is more difficult than a binary tree. A BST is a BT but a BT is not a BST. So making a normal BT is just pointing nodes.


Huh... TIL, as they say.


There’s more than making a node the points to other nodes. That’s not what makes a binary tree a binary tree.


I mean… it literally is all there is to it


Well, the requirements I faced were to implement the tree such that nodes were inserted with the standard ordering you would expect. Walking the tree to find the best place to insert them, etc.


Again, that's stupidly easy. Right is bigger, left is smaller.

If the current node is a leaf, insert left if smaller and right if bigger.

If not a leaf nods, run the method recursively on the left it it's smaller, on the right if it's bigger.

If they asked you to write a self-balancing binary tree it's one thing, but there's nothing tricky about writing a normal ordered binary tree.


It isnt the knowledge itself, it is making sure it works and is tested, etc, all in <45m. It serves as a worse fizzbuzz imo.


Do you want me to show you a single-linked list or a double-linked one?

    [data, *next] [data, *next] [data, *next] [data, *next] 
If next is null (0), it's the end of the list.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: