Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, samius, Вы писали:
PD>Боже, зачем же так сложно и длинно ? Да еще ArgumentNullException, которого тут вообще не должно быть!
Поспешил
PD>// мне пришлось заменить свойства на поля, так как свойства нельзя передавать по ref
PD>// public их делать совсем не обязательно, но лень было возиться
PD>// так что в моем коде не используются твои Left и Right, а используются мои left и right
По поводу ref у меня пунктик, да и у много кого тоже. Framework Design Guidlines его тоже не рекоммендуют. Хотя, как средство оптимизации он хорош.
Действительно, если метод вставки затолкать в Node<T>, то поля делать публичными не обязательно.
PD>// а вот и моя версия — чистая калька с С++
PD>// DPL — это я (Дворкин Павел Лазаревич
PD>// как видишь, она ничуть не сложнее твоей LinQ-овской, скорее проще 
Проще — нет, ref-ы ее не делают проще. Но визуально меньше кода — это да.
S>>При том что иммутабельное заполнение дерева в 3 и более раз короче, оно во столько же раз проигрывает по
S>>Можно сказать паритет
PD>Нет, 2.5:0.5 в мою пользу. Я сделал эту DPLSearchAndInsert столь же простой, как твоя, и даже проще, а выигрыш по времени в 3 раза и ни одного лишнего new. Так что я выиграл и по памяти, и по времени, а вот по простоте кода — в лучшем случае паритет 
По времени и памяти — соглашусь.
По простоте кода — нет. Считаем кол-во непустых линий методов вставки и построения дерева:
Моих — 9
Ваших — 21 (если выкинуть скобки, то 19)
+ ref. Лично у меня с ним проблем нет, но он не делает код проще — это точно.
PD>P.S. А вот машина у тебя получше раза в 2. Если не секрет, какой процессор ? У меня Athlon Dual 4200+ 
Intel Core 2 Duo E6600