• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 20:05
CEST 02:05
KST 09:05
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
Code S Season 1 (2026) - RO4 & Finals Preview4[ASL21] Ro4 Preview: On Course12Code S Season 1 - RO8 Preview7[ASL21] Ro8 Preview Pt2: Progenitors8Code S Season 1 - RO12 Group A: Rogue, Percival, Solar, Zoun13
Community News
Code S Season 1 (2026) - RO8 Results2Weekly Cups (May 4-10): Clem, MaxPax, herO win1Maestros of The Game 2 announcement and schedule !11Weekly Cups (April 27-May 4): Clem takes triple0RSL Revival: Season 5 - Qualifiers and Main Event12
StarCraft 2
General
Team Liquid Map Contest #22 - The Finalists Code S Season 1 (2026) - RO4 & Finals Preview Code S Season 1 (2026) - RO8 Results Code S Season 1 (2026) - RO12 Results MaNa leaves Team Liquid
Tourneys
GSL Code S Season 1 (2026) Sparkling Tuna Cup - Weekly Open Tournament KSL Week 89 2026 GSL Season 2 Qualifiers Maestros of The Game 2 announcement and schedule !
Strategy
Custom Maps
[D]RTS in all its shapes and glory <3 [A] Nemrods 1/4 players
External Content
The PondCast: SC2 News & Results Mutation # 526 Rubber and Glue Mutation # 525 Wheel of Misfortune Mutation # 524 Death and Taxes
Brood War
General
vespene.gg — BW replays in browser Data needed BGH Auto Balance -> http://bghmmr.eu/ Pros React to: TvT Masterclass in FlaSh vs Light BW General Discussion
Tourneys
[ASL21] Semifinals B [BSL22] RO8 Bracket Stage + Another TieBreaker [ASL21] Ro8 Day 4 Escore Tournament StarCraft Season 2
Strategy
Muta micro map competition Fighting Spirit mining rates [G] Hydra ZvZ: An Introduction Simple Questions, Simple Answers
Other Games
General Games
Warcraft III: The Frozen Throne Nintendo Switch Thread Path of Exile Stormgate/Frost Giant Megathread Starcraft Tabletop Miniature Game
Dota 2
The Story of Wings Gaming
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Vanilla Mini Mafia Mafia Game Mode Feedback/Ideas TL Mafia Community Thread Five o'clock TL Mafia
Community
General
US Politics Mega-thread European Politico-economics QA Mega-thread YouTube Thread Russo-Ukrainian War Thread UK Politics Mega-thread
Fan Clubs
The herO Fan Club!
Media & Entertainment
[Manga] One Piece Anime Discussion Thread [Req][Books] Good Fantasy/SciFi books
Sports
2024 - 2026 Football Thread McBoner: A hockey love story Formula 1 Discussion
World Cup 2022
Tech Support
streaming software Strange computer issues (software) [G] How to Block Livestream Ads
TL Community
Travel Agencies vs Online Booking Platforms The Automated Ban List
Blogs
How EEG Data Can Predict Gam…
TrAiDoS
ramps on octagon
StaticNine
Funny Nicknames
LUCKY_NOOB
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1278 users

C++ help? (part deux)

Blogs > tossinYoSalad
Post a Reply
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
Last Edited: 2009-11-11 02:06:42
November 11 2009 02:00 GMT
#1
Howdy guys, you all helped me a ton last time I had a problem, so I'm coming back for more! This one falls under more general algorithms then c++ in general. Anyway...

For this project i have a medium-sized database implemented as a Binary Search Tree using the author of the books implementation (it sucks). Anyway, I got everything working fine, except one thing. The BST has a "keyed item" that it uses to keep the tree sorted etc. The problem is, I have to display a report based on a non-keyed item. I can't just change the keyed item and resort the tree, and I can't move the items into a new data structure. Is there any remotely efficient way to do this? Am I just missing something?

tl;dr version: how to output from a binary search tree based on a NON keyed entry.

thanks a ton in advance guys.

edit:
I suppose I should elaborate a bit more. I know that I could just write a findMin method(function?) based on the non-keyed item, print it, delete it, and keep going through the tree. But this is horribly inefficient because of all the loop nesting. I'm asking if there's a better way to do it.

tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
Last Edited: 2009-11-11 02:06:37
November 11 2009 02:06 GMT
#2
double post.
imDerek
Profile Blog Joined August 2007
United States1944 Posts
November 11 2009 02:29 GMT
#3
So you need to display the non-keyed items in sorted order?
Least favorite progamers: Leta, Zero, Mind, Shine, free, really <-- newly added
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
Last Edited: 2009-11-11 02:46:03
November 11 2009 02:45 GMT
#4
On November 11 2009 11:29 imDerek wrote:
So you need to display the non-keyed items in sorted order?



yes..well..

the tree is made up of objects that contain like 25 fields each or so. One of the fields is the keyed item. I have to display the objects sorted by a different item lol.
allluckysevens7777
Profile Joined February 2009
United States53 Posts
November 11 2009 03:03 GMT
#5
Your idea isn't necessarily horribly inefficient (O(n*n)), but not fantastic I guess? Depends on what you're shooting for.

Why aren't you able to re-sort or use an additional data structure? Just a stipulation of the problem?

When you say "can't move the items into a new data structure": do you mean you aren't allowed any additional storage, or does this mean "can't create a new BST"?
If you can create just an additional array, then toss all of the items in there and do a quicksort for O(n lg n) performance, but it doesn't really look like you can squeeze anything better out. Will look at it a little more.
tarpman
Profile Joined February 2009
Canada723 Posts
Last Edited: 2009-11-11 03:04:02
November 11 2009 03:03 GMT
#6
why exactly can't you just read the fields you're interested in into an array and sort that? without copying stuff (or at least references to stuff) into another data structure I don't think there's really an efficient way to do this.


poster above me: sorry, but n^2 does in fact count as 'horribly inefficient'
Saving the world, one kilobyte at a time.
imDerek
Profile Blog Joined August 2007
United States1944 Posts
November 11 2009 03:12 GMT
#7
I suppose I should elaborate a bit more. I know that I could just write a findMin method(function?) based on the non-keyed item, print it, delete it, and keep going through the tree. But this is horribly inefficient because of all the loop nesting. I'm asking if there's a better way to do it.


You can consider using heapsort if you're going to do it this way, O(n lg n) performance, just need to heapify the tree, then keep removing the min element

http://en.wikipedia.org/wiki/Heapsort
Least favorite progamers: Leta, Zero, Mind, Shine, free, really <-- newly added
allluckysevens7777
Profile Joined February 2009
United States53 Posts
Last Edited: 2009-11-11 03:19:22
November 11 2009 03:18 GMT
#8
Wouldn't that count as re-sorting the tree? Works as an in-place alternative to the array solution though.
imDerek
Profile Blog Joined August 2007
United States1944 Posts
November 11 2009 03:19 GMT
#9
oh yeah but since you're altering the tree anyway u might as well re-sort it haha
Least favorite progamers: Leta, Zero, Mind, Shine, free, really <-- newly added
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
Last Edited: 2009-11-11 03:50:37
November 11 2009 03:49 GMT
#10
lol thanks for all the input guys. I cant re-sort the tree, and I can't move the elements into another data structure (including arrays). just a stipulation of the problem.

btw the findMin solution is worse than O(n^2).

findMin would have two nested loops, and findMin itself would be inside 2 nested loops.

Ill just go ahead and do it anyway. this class is fucking stupid. this is a very small part of a much larger project, and is the only part thats giving me headaches lol.
wok
Profile Blog Joined July 2009
United States504 Posts
November 11 2009 03:49 GMT
#11
heapsort. Since your items aren't indexed for the value you're looking for, you pretty much have to resort it. Heapsort is O(nlogn) as opposed to the min-first sorting you mentioned, which is O(n^2).
I'll race you to defeatism... you win.
wok
Profile Blog Joined July 2009
United States504 Posts
November 11 2009 03:53 GMT
#12
On November 11 2009 12:49 tossinYoSalad wrote:
lol thanks for all the input guys. I cant re-sort the tree, and I can't move the elements into another data structure (including arrays). just a stipulation of the problem.

btw the findMin solution is worse than O(n^2).

findMin would have two nested loops, and findMin itself would be inside 2 nested loops.


It should be better than n^2.
You look through n elements to find the smallest, then n-1 for the 2nd, etc...

You thus have O(n * (n-1)/2) = O(n^2). If your findMin method is > n^2 you're doing something wrong in your looping implementation.
I hypothesize your issue is that your tree traversal is shit. Pre-order, in-order, post-order are all O(n). You should be fine in all those cases.
I'll race you to defeatism... you win.
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
November 11 2009 04:37 GMT
#13
On November 11 2009 12:53 wok wrote:
Show nested quote +
On November 11 2009 12:49 tossinYoSalad wrote:
lol thanks for all the input guys. I cant re-sort the tree, and I can't move the elements into another data structure (including arrays). just a stipulation of the problem.

btw the findMin solution is worse than O(n^2).

findMin would have two nested loops, and findMin itself would be inside 2 nested loops.


It should be better than n^2.
You look through n elements to find the smallest, then n-1 for the 2nd, etc...

You thus have O(n * (n-1)/2) = O(n^2). If your findMin method is > n^2 you're doing something wrong in your looping implementation.
I hypothesize your issue is that your tree traversal is shit. Pre-order, in-order, post-order are all O(n). You should be fine in all those cases.


yeah i was just going through it in my head and I counted loops wrong. it would be n^2. in any case its all done and off to be graded.
tree traversal was implemented by the author of the book so I had nothing to do with that lol.
JohnColtrane
Profile Blog Joined July 2008
Australia4813 Posts
November 11 2009 06:06 GMT
#14
sorry i cant help but laugh whenever i see your name lmao
HEY MEYT
tossinYoSalad
Profile Blog Joined May 2009
United States215 Posts
November 11 2009 07:22 GMT
#15
On November 11 2009 15:06 JohnColtrane wrote:
sorry i cant help but laugh whenever i see your name lmao



haha thanks . i like it. the full name is proTossinYoSalad.. has an extra ring to it.
Please log in or register to reply.
Live Events Refresh
OSC
00:00
OSC Elite Rising Star #19
CranKy Ducklings22
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
PiGStarcraft300
SpeCial 130
CosmosSc2 105
Ketroc 60
JuggernautJason41
StarCraft: Brood War
GuemChi 4943
Artosis 661
Dota 2
monkeys_forever509
NeuroSwarm169
League of Legends
JimRising 541
Other Games
summit1g15964
gofns15103
tarik_tv10981
Liquid`RaSZi3569
FrodaN1863
Pyrionflax148
UpATreeSC39
fpsfer 2
Organizations
Other Games
gamesdonequick1429
BasetradeTV98
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 15 non-featured ]
StarCraft 2
• Hupsaiya 67
• davetesta23
• CranKy Ducklings SOOP4
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Other Games
• imaqtpie1310
• Scarra1039
Upcoming Events
Replay Cast
8h 55m
Wardi Open
11h 55m
Monday Night Weeklies
15h 55m
Replay Cast
23h 55m
The PondCast
1d 9h
Kung Fu Cup
1d 10h
GSL
2 days
Replay Cast
2 days
GSL
3 days
WardiTV Spring Champion…
3 days
[ Show More ]
Replay Cast
3 days
Sparkling Tuna Cup
4 days
WardiTV Spring Champion…
4 days
Replay Cast
4 days
RSL Revival
5 days
Classic vs SHIN
Rogue vs Bunny
BSL
5 days
Replay Cast
5 days
Afreeca Starleague
6 days
Flash vs Soma
RSL Revival
6 days
BSL
6 days
Patches Events
6 days
Liquipedia Results

Completed

Escore Tournament S2: W7
2026 GSL S1
Nations Cup 2026

Ongoing

BSL Season 22
ASL Season 21
IPSL Spring 2026
KCM Race Survival 2026 Season 2
Acropolis #4
KK 2v2 League Season 1
BSL 22 Non-Korean Championship
YSL S3
SCTL 2026 Spring
RSL Revival: Season 5
Heroes Pulsing #1
Asian Champions League 2026
IEM Atlanta 2026
PGL Astana 2026
BLAST Rivals Spring 2026
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
BLAST Open Spring 2026
ESL Pro League S23 Finals
ESL Pro League S23 Stage 1&2

Upcoming

Escore Tournament S2: W8
CSLAN 4
Kung Fu Cup 2026 Grand Finals
HSC XXIX
uThermal 2v2 2026 Main Event
Maestros of the Game 2
WardiTV Spring 2026
2026 GSL S2
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
XSE Pro League 2026
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.