• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 15:17
CEST 21:17
KST 04:17
  • 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
RSL Season 1 - Final Week6[ASL19] Finals Recap: Standing Tall15HomeStory Cup 27 - Info & Preview18Classic wins Code S Season 2 (2025)16Code S RO4 & Finals Preview: herO, Rogue, Classic, GuMiho0
Community News
Esports World Cup 2025 - Brackets Revealed18Weekly Cups (July 7-13): Classic continues to roll8Team TLMC #5 - Submission extension3Firefly given lifetime ban by ESIC following match-fixing investigation17$25,000 Streamerzone StarCraft Pro Series announced7
StarCraft 2
General
Who will win EWC 2025? Esports World Cup 2025 - Brackets Revealed Crumbl Cookie Spoilers – August 2025 Heaven's Balance Suggestions (roast me) The Memories We Share - Facing the Final(?) GSL
Tourneys
Sea Duckling Open (Global, Bronze-Diamond) FEL Cracov 2025 (July 27) - $8000 live event Sparkling Tuna Cup - Weekly Open Tournament RSL: Revival, a new crowdfunded tournament series $5,100+ SEL Season 2 Championship (SC: Evo)
Strategy
How did i lose this ZvP, whats the proper response
Custom Maps
External Content
Mutation # 482 Wheel of Misfortune Mutation # 481 Fear and Lava Mutation # 480 Moths to the Flame Mutation # 479 Worn Out Welcome
Brood War
General
Flash Announces (and Retracts) Hiatus From ASL BGH Auto Balance -> http://bghmmr.eu/ Soulkey Muta Micro Map? BW General Discussion [ASL19] Finals Recap: Standing Tall
Tourneys
[Megathread] Daily Proleagues 2025 ACS Season 2 Qualifier CSL Xiamen International Invitational Cosmonarchy Pro Showmatches
Strategy
Simple Questions, Simple Answers I am doing this better than progamers do.
Other Games
General Games
Stormgate/Frost Giant Megathread Path of Exile Nintendo Switch Thread CCLP - Command & Conquer League Project The PlayStation 5
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Heroes of StarCraft mini-set
TL Mafia
TL Mafia Community Thread Vanilla Mini Mafia
Community
General
Things Aren’t Peaceful in Palestine US Politics Mega-thread The Games Industry And ATVI Russo-Ukrainian War Thread Stop Killing Games - European Citizens Initiative
Fan Clubs
SKT1 Classic Fan Club! Maru Fan Club
Media & Entertainment
[Manga] One Piece Korean Music Discussion Movie Discussion! Anime Discussion Thread [\m/] Heavy Metal Thread
Sports
2024 - 2025 Football Thread Formula 1 Discussion TeamLiquid Health and Fitness Initiative For 2023 NBA General Discussion
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List
Blogs
Ping To Win? Pings And Their…
TrAiDoS
momentary artworks from des…
tankgirl
from making sc maps to makin…
Husyelt
StarCraft improvement
iopq
Customize Sidebar...

Website Feedback

Closed Threads



Active: 707 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
Canada718 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
RotterdaM Event
17:00
$100 Stream Ruble
RotterdaM820
Liquipedia
CSO Contender
17:00
#43
Liquipedia
PSISTORM Gaming Misc
15:55
FSL Team League: PTB vs RR
Liquipedia
Epic.LAN
12:00
Epic.LAN 45 Playoffs Stage
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
RotterdaM 820
BRAT_OK 97
JuggernautJason47
StarCraft: Brood War
Mini 1028
Larva 586
firebathero 204
TY 117
ZZZero.O 109
Aegong 74
yabsab 16
GoRush 14
Stormgate
TKL 143
Dota 2
qojqva4281
monkeys_forever304
League of Legends
Grubby3702
Counter-Strike
fl0m2431
Stewie2K767
Heroes of the Storm
Khaldor593
Liquid`Hasu233
Other Games
Beastyqt630
Hui .199
Skadoodle170
KnowMe127
ArmadaUGS121
Sick57
ToD45
Trikslyr40
Organizations
Other Games
gamesdonequick2238
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 18 non-featured ]
StarCraft 2
• printf 69
• tFFMrPink 15
• Kozan
• Migwel
• AfreecaTV YouTube
• sooper7s
• intothetv
• IndyKCrew
• LaughNgamezSOOP
StarCraft: Brood War
• blackmanpl 25
• HerbMon 20
• STPLYoutube
• ZZZeroYoutube
• BSLYoutube
Dota 2
• masondota21565
League of Legends
• Nemesis6063
Other Games
• imaqtpie1720
• WagamamaTV277
Upcoming Events
Sparkling Tuna Cup
14h 43m
Online Event
20h 43m
Esports World Cup
2 days
ByuN vs Astrea
Lambo vs HeRoMaRinE
Clem vs TBD
Solar vs Zoun
SHIN vs Reynor
Maru vs TriGGeR
herO vs Lancer
Cure vs ShoWTimE
Esports World Cup
3 days
Esports World Cup
4 days
Esports World Cup
5 days
CranKy Ducklings
6 days
BSL20 Non-Korean Champi…
6 days
BSL20 Non-Korean Champi…
6 days
Bonyth vs Sziky
Dewalt vs Hawk
Hawk vs QiaoGege
Sziky vs Dewalt
Mihu vs Bonyth
Zhanhun vs QiaoGege
QiaoGege vs Fengzi
Liquipedia Results

Completed

CSL Xiamen Invitational: ShowMatche
RSL Revival: Season 1
Murky Cup #2

Ongoing

BSL 2v2 Season 3
Copa Latinoamericana 4
Jiahua Invitational
BSL20 Non-Korean Championship
CSL Xiamen Invitational
2025 ACS Season 2
Championship of Russia 2025
Underdog Cup #2
FISSURE Playground #1
BLAST.tv Austin Major 2025
ESL Impact League Season 7
IEM Dallas 2025
PGL Astana 2025
Asian Champions League '25

Upcoming

CSLPRO Last Chance 2025
CSLPRO Chat StarLAN 3
BSL Season 21
RSL Revival: Season 2
SEL Season 2 Championship
uThermal 2v2 Main Event
FEL Cracov 2025
Esports World Cup 2025
ESL Pro League S22
StarSeries Fall 2025
FISSURE Playground #2
BLAST Open Fall 2025
BLAST Open Fall Qual
Esports World Cup 2025
BLAST Bounty Fall 2025
BLAST Bounty Fall Qual
IEM Cologne 2025
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 © 2025 TLnet. All Rights Reserved.