• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 18:13
CEST 00:13
KST 07:13
  • 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
[ASL22] Ro4 Preview: Mirror Mirror4[ASL22] Ro8 Preview: Within Reach5[ASL22] Ro8 Preview: In A Tizzy11[ASL22] Ro16 Preview: Holy Diver5[ASL22] Ro16 Preview: Rough Waters10
Community News
Rollback Netcode in Brood War345.0.17 Patch Notes - October 7, 202621Weekly Cups Results (Sep 28-Oct 4)0SC4ALL: II SC2 Complete Invited Player Lineup10StarCraft II 5.0.17 PTR Patch Notes (Sept 30, 2026)78
StarCraft 2
General
We built a tool to spot smurfs at match start 5.0.17 Patch Notes - October 7, 2026 [Old] StarCraft 3 Reportedly in Development StarCraft II 5.0.17 PTR Patch Notes (Sept 30, 2026) How do you feel about the mass reverts in the 5.0.17 PTR?
Tourneys
ScienceCraft (October 24-25) - Live Event RSL 2026 Offline Finals LCQ Sign-Ups Stellar Fest TWO the Moon (Dec 16-20) ISSL (IntoTheTV x SOOP SC2 League): Premier Sparkling Tuna Cup - Weekly Open Tournament
Strategy
[H] ZvP Mid-Late Game: Stalkers Collossi HT
Custom Maps
[M] (2) Sweltering Sands [M] (2) Frigid Storage
External Content
Mutation # 546 Catch the Train The PondCast: SC2 News & Results Mutation # 545 And Drops and Rifts Mutation # 544 Double Trouble
Brood War
General
Rollback Netcode in Brood War Making an Online Broodwar Manager Game BW General Discussion Sagi.gg Launcher Released Fantasy returning?
Tourneys
[ASL22] Semifinal A [Megathread] Daily Proleagues [ASL22] Semifinal B [ASL22] Ro8 Day 4
Strategy
Simple Questions, Simple Answers Cliff Jump Revisited (1 in a 1000 strategy) Replay Review Process - What do you do?
Other Games
General Games
Nintendo Switch Thread General RTS Discussion Thread Warcraft III: The Frozen Throne Stormgate/Frost Giant Megathread Total Annihilation Zero
Dota 2
Dota 2 Champions League Season 3 Begins April 25! Official 'what is Dota anymore' discussion
League of Legends
[TL LoL EUW IHs] Teemo shall perish
Heroes of the Storm
Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
TL Mafia Community Thread
Community
General
Things Aren’t Peaceful in Palestine US Politics Mega-thread Russo-Ukrainian War Thread Artificial Intelligence Thread Canadian Politics Mega-thread
Fan Clubs
Serral Fan Club
Media & Entertainment
[Manga] One Piece Movie Discussion! Diablo Animated Series on Netflix
Sports
Football (Soccer) Thread MLB/Baseball 2023
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
Recent Gifted Posts
Blogs
[ASL22] Ro4 Day1 Ticket Giv…
bITt.mAN
Escaping Into Video Games: G…
TrAiDoS
38 yo Retired SWE loo…
PurE)Rabbit-SF
Can Bots Beat Pros?? Starcr…
namkraft
[meme] I finally understa…
LUCKY_NOOB
Regacy Esports:Our Goa…
regacyesports
Customize Sidebar...

Website Feedback

Closed Threads



Active: 8675 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
Next event in 47m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
ProTech160
NeuroSwarm 145
Nina 128
ViBE69
StarCraft: Brood War
Britney 13341
910 68
NaDa 18
Dota 2
monkeys_forever302
canceldota136
League of Legends
Doublelift3851
Heroes of the Storm
Grubby4324
Other Games
summit1g4389
fl0m1071
FrodaN888
C9.Mang0344
Liquid`Hasu290
ToD240
UpATreeSC63
JimRising 34
PPMD28
JuggernautJason1
Organizations
StarCraft 2
angryscii 28
[ Show 21 non-featured ]
StarCraft 2
• Hupsaiya 80
• musti20045 32
• poizon28 24
• RyuSc2 23
• Adnapsc2 10
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• Migwel
StarCraft: Brood War
• FirePhoenix9
• niya90s 1
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• masondota21424
• WagamamaTV566
League of Legends
• Scarra721
Other Games
• imaqtpie1072
• Shiphtur646
• tFFMrPink 13
Upcoming Events
OSC
47m
Big Brain Bouts
11h 47m
Rex vs INexorable
GgMaChine vs HeRoMaRinE
Reynor vs herO
AI Arena Tournament
18h 47m
BSL: Ladder Tournament
20h 47m
Sparkling Tuna Cup
1d 11h
Patches Events
1d 16h
BSL Open Qualifier
1d 20h
BSL Open Qualifier
1d 20h
OSC
2 days
WardiTV Weekly
3 days
[ Show More ]
PiGosaur Cup
4 days
The PondCast
5 days
Online Event
6 days
Liquipedia Results

Completed

Proleague 2026-10-08
Blizzard Classic Cup 2026
Copium Cup

Ongoing

ASL Season 22
Super Anchor Qualifying S3
Acropolis #5
Acropolis #5 - GSB
ESL Pro League Season 24
Stake Ranked Episode 4
1win Private Club #1
Logitech G Play Connect 2026
SL StarSeries Fall 2026
FISSURE Playground #3
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026

Upcoming

Acropolis #5 - GSC
BSL Season 23
SC4ALL II: Brood War
BSL 23: Non-Korean Championship
HSC XXX
Stellar Fest 2: Lunar Cup
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
RSL Offline Finals
HCC Season 3
eXTREMESLAND 2026
PGL Major Singapore 2026
Stake Ranked Episode 6
BLAST Rivals Fall 2026
IEM Beijing 2026
Stake Ranked Episode 5
PGL Masters Bucharest 2026
1win Private Club #2
Thunderpick World Champ. '26
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.