<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>WetBlog</title>
        <link>http://blogs.ugidotnet.org/WetBlog/Default.aspx</link>
        <description>Il blog di Luca Del Tongo</description>
        <language>it-IT</language>
        <copyright>Luca Del Tongo</copyright>
        <generator>Subtext Version 2.1.0.3</generator>
        <image>
            <title>WetBlog</title>
            <url>http://blogs.ugidotnet.org/images/RSS2Image.gif</url>
            <link>http://blogs.ugidotnet.org/WetBlog/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>ThinkCode.TV, screencast di programmazione in italiano</title>
            <category>.NET</category>
            <link>http://blogs.ugidotnet.org/WetBlog/archive/2010/03/05/thinkcode.tv-screencast-di-programmazione-in-italiano.aspx</link>
            <description>&lt;p&gt;Un paio di mesi fà mi sono imbattuto in &lt;a href="http://it.thinkcode.tv/" target="_blank"&gt;&lt;strong&gt;ThinkCode.TV&lt;/strong&gt;&lt;/a&gt;, una startup nordamericana fondata da tre italiani con l’obiettivo di creare e vendere screencasts di programmazione in italiano. La cosa che inizialmente mi ha fatto riflettere è che la tendenza a lasciare il “bel” paese per  motivi di lavoro “purtroppo” non si arresta, contribuendo di fatto ad un ulteriore impoverimento nazionale.  &lt;/p&gt;  &lt;p&gt;A livello tecnico, la cosa che mi ha incuriosito è stata la varietà di tematiche offerte dagli screencasts; si passa infatti attraverso SmallTalk, Python, Jquery, Silverlight fino ad arrivare al TDD. Dopo essere entrato in contatto con gli autori per avere alcune informazioni sia sulla loro esperienza di vita e professionale oltreoceano sia sugli screencast legati al TDD, ho ricevuto un paio di screencast come review copies. Come reviewer ed ancor prima come utente quello che ho notato da subito è stata la trasparenza ed accessibilità dei prezzi e la fiducia che i ragazzi di ThinkCode ripongono nei propri clienti in quanto:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;L’intero percorso formativo sul TDD (11 lezioni), viene offerto ad un prezzo molto abbordabile di 47 € iva inclusa. &lt;/li&gt;    &lt;li&gt;E’ possibile acquistare le singole videolezioni ad un prezzo di circa 7€ (anzi 6.99€ LOL) &lt;/li&gt;    &lt;li&gt;Gli screencast, registrati in vari formati e scaricabili in alta definizione (HD 720p), sono liberi da DRM &lt;/li&gt;    &lt;li&gt;E’ possibile per ogni screencast visionare una preview di un paio di minuti &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Quello che mi ha colpito durante la visione degli screencasts è l’approccio utilizzato: inizialmente vengono proposte alcune slides introduttive (necessarie per fissare sin da subito alcuni concetti) e successivamente vengono mostrati i relativi samples attraverso molteplici linguaggi di programmazione ed ambienti di sviluppo; quest’ultimo aspetto aiuta secondo me a mantenere una concentrazione maggiore proprio perchè non si ha la classica sensazione di “familiarità” (tipo la classica coppia C# &amp;amp; VS) che spesso porta ad una minore attenzione. A livello universitario ad esempio un corso del genere sul TDD dovrebbe IMVHO essere introdotto all’interno di un corso di ingegneria del software. L’unico appunto che mi sento di fare ai ragazzi è di essere più celeri nella preparazione dei percorsi formativi in quanto ad oggi ancora molti screencast sono in fase di preparazione.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/WetBlog/aggbug/98140.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Luca Del Tongo</dc:creator>
            <guid>http://blogs.ugidotnet.org/WetBlog/archive/2010/03/05/thinkcode.tv-screencast-di-programmazione-in-italiano.aspx</guid>
            <pubDate>Fri, 05 Mar 2010 10:38:37 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/WetBlog/comments/98140.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/WetBlog/archive/2010/03/05/thinkcode.tv-screencast-di-programmazione-in-italiano.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WetBlog/comments/commentRss/98140.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WetBlog/services/trackbacks/98140.aspx</trackback:ping>
        </item>
        <item>
            <title>Emgu CV: A computer vision Library</title>
            <category>University Stuff</category>
            <link>http://blogs.ugidotnet.org/WetBlog/archive/2009/08/30/emgu-cv-a-computer-vision-library.aspx</link>
            <description>&lt;p&gt;In questi ultimi mesi mi sto interessando di Computer Vision. Sto cercando di sfruttare gli ultimi mesi ed esami universitari per cercare di capire quale siano le varie aree di ricerca che maggiormente mi interessano e le prospettive presenti sul panorama nazionale.  Dopo essermi concentrato sugli algoritmi e le strutture dati, aver studiato ed implementato alcuni algoritmi di data mining e business intelligence, l’ultimo elaborato che ho svolto per un progetto universitario riguarda proprio la computer vision, in particolar modo il riconoscimento di oggetti. Attualmente sono davvero poche le librerie ed i wrapper C# che implementano algoritmi di computer vision. La libreria che preferisco e che ho utilizzato per alcuni esperimenti piuttosto interessanti è &lt;a href="http://www.emgu.com/" target="_blank"&gt;Emgu CV&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Emgu CV è un wrapper .Net della famosa libreria Intel OpenCV. Tra i punti di forza di Emgu CV sicuramente il fatto che sia cross platform e che l’autore abbia un ciclo di sviluppo piuttosto agile; nuove release frequenti corredate da unit test. Gli esperimenti corredati da codice c# realizzati utilizzando Emgu, li potete trovate all’interno della &lt;a href="http://www.bernardotti.it/portal/forumdisplay.php?f=269" target="_blank"&gt;sezione di Emgu CV&lt;/a&gt; (di cui sono moderatore) del più importante forum di computer vision, ovvero il forum di &lt;a href="http://www.bernardotti.it/" target="_blank"&gt;Flavio Bernardotti&lt;/a&gt;. All’interno del forum ho mostrato esempi di come calcolare il flusso ottico all’interno di un semplice video, di come realizzare riconoscimento facciale etc etc. Ho poi registrato alcuni tutorial in inglese in cui mostro ad esempio come eseguire eye detection oppure come controllare all’interno di una windows form la posizione del mouse semplicemente muovendo la testa.&lt;/p&gt;  &lt;p&gt;Chiunque abbia esperienze e/o suggerimenti anche con altre librerie (Aforge.Net su tutte), si faccia vivo :)&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:9e97a1cd-0d7e-4ce2-90f7-6f246d782902" class="wlWriterEditableSmartContent"&gt;&lt;div id="aff690b1-e4c7-4bef-be3c-78fdf0d0fa93" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=6FxUe8KWNa4" target="_new"&gt;&lt;img src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/WetBlog/WindowsLiveWriter/EmguCVAcomputervisionLibrary_CF5A/video8606e5c321bc.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('aff690b1-e4c7-4bef-be3c-78fdf0d0fa93'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/6FxUe8KWNa4&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/6FxUe8KWNa4&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:8f0f1995-bef9-4d1a-b22d-08dad2d99f22" class="wlWriterEditableSmartContent"&gt;&lt;div id="5c0bee97-d871-49e6-a99b-4e8a7acedc7b" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=07QAhRJmcKQ" target="_new"&gt;&lt;img src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/WetBlog/WindowsLiveWriter/EmguCVAcomputervisionLibrary_CF5A/video42e6dc061ff6.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('5c0bee97-d871-49e6-a99b-4e8a7acedc7b'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/07QAhRJmcKQ&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/07QAhRJmcKQ&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/WetBlog/aggbug/96963.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Luca Del Tongo</dc:creator>
            <guid>http://blogs.ugidotnet.org/WetBlog/archive/2009/08/30/emgu-cv-a-computer-vision-library.aspx</guid>
            <pubDate>Sun, 30 Aug 2009 12:44:26 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/WetBlog/comments/96963.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/WetBlog/archive/2009/08/30/emgu-cv-a-computer-vision-library.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WetBlog/comments/commentRss/96963.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WetBlog/services/trackbacks/96963.aspx</trackback:ping>
        </item>
        <item>
            <title>SSAS: SVM algorithm Plugin</title>
            <category>.NET</category>
            <category>University Stuff</category>
            <link>http://blogs.ugidotnet.org/WetBlog/archive/2009/02/05/ssas-svm-algorithm-plugin.aspx</link>
            <description>&lt;p&gt;Difficilmente posto news, stavolta però farò un eccezione in quanto su codeplex, alcuni sviluppatori di &lt;strong&gt;Avanade&lt;/strong&gt; hanno realizzato un &lt;a href="http://www.codeplex.com/svmplugin" target="_blank"&gt;plugin&lt;/a&gt; per Sql Server hostato su codeplex che implementa una &lt;strong&gt;SVM&lt;/strong&gt;. Al momento attuale può essere utilizzato per eseguire classificazione confrontando le prestazioni del modello con gli altri che si possono costruire usando gli algoritmi inclusi in &lt;strong&gt;SSAS(Decision Trees, Naive Bayes, Neural Network )&lt;/strong&gt;; ho condotto alcuni esperimenti e devo dire che l'implementazione dell'algoritmo è buona anche se come ho suggerito nel forum è necessario inserire un modo per calcolare i parametri ottimali per l'addestramento della macchina; il mio suggerimento è stato quello di eseguire un ricerca dei parametri utilizzando una grid search verificando la bontà dei parametri utilizzando la cross validazione (quest'ultima inclusa in Sql Server 2008)... insomma un in bocca al lupo ai developer per la bella iniziativa... magari se trovo un pò di tempo sarebbe bello fare una comparazione delle prestazioni tra il plugin e libsvm ma ancora il plugin è giovane e di strada ne dovrà fare molta....&lt;/p&gt;  &lt;p&gt;Ad maiora&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/WetBlog/aggbug/95396.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Luca Del Tongo</dc:creator>
            <guid>http://blogs.ugidotnet.org/WetBlog/archive/2009/02/05/ssas-svm-algorithm-plugin.aspx</guid>
            <pubDate>Thu, 05 Feb 2009 20:54:51 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/WetBlog/comments/95396.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/WetBlog/archive/2009/02/05/ssas-svm-algorithm-plugin.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WetBlog/comments/commentRss/95396.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WetBlog/services/trackbacks/95396.aspx</trackback:ping>
        </item>
        <item>
            <title>Microsoft Robotics Studio: Custom Drive by Wire</title>
            <category>.NET</category>
            <link>http://blogs.ugidotnet.org/WetBlog/archive/2009/01/26/microsoft-robotics-studio-custom-drive-by-wire.aspx</link>
            <description>&lt;p&gt;Apro questo post ringraziando gli amici che hanno accompagnato la mia avventura da student partner, bella esperienza terminata lo scorso anno... non voglio dilungarmi sulle motivazioni di questa decisione, resta il fatto che il bello di essere studenti DOVREBBE essere quello di avere la libertà di scegliere senza avere vincoli o restrizioni del caso... detto questo lo scorso fine settimana è arrivato il premio per il "lavoro" che ho svolto da MSP... un bel Lego Mindstorm NXT!!!! Il kit è davvero bello e dopo aver preso contatto con i vari sensori e aver costruito il primo semplice robottino ho deciso di creare la prima applicazioncina VPL, la classica drive by wire.... ora nei tutorial presenti dentro la documentazione di MSRS è presente un diagramma VPL drive by wire ma dato che non ho condiviso alcune scelte che hanno fatto, ho deciso di crearne uno modificato (in meglio spero) che permetta di pilotare il robottino a proprio piacimento!!!! Allego lo screenshot del VPL per chi fosse interessato :)&lt;/p&gt;  
&lt;p&gt;&lt;a href="http://x9zanw.bay.livefilestore.com/y1pRuhX9Zd_sdsnARAeeI1CpbHJXy7AaHXmTZMCpgoxo4gkhN5abGNssOCRo9ZJ7aJFplUgidN-HZ0/DriveByWireLukaDT.jpg" target="_blank"&gt;&lt;img src="http://x9zanw.bay.livefilestore.com/y1p3tJAiBHs7fjhBpJrs-7LjMnfgUqEF0bFB53QPBMLX-Z7RUXr_xHVPm3QTN1MQ6qNBBtVvi-KXSg/DriveByWireLukaDT_Prev.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;img src="http://blogs.ugidotnet.org/WetBlog/aggbug/95304.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Luca Del Tongo</dc:creator>
            <guid>http://blogs.ugidotnet.org/WetBlog/archive/2009/01/26/microsoft-robotics-studio-custom-drive-by-wire.aspx</guid>
            <pubDate>Mon, 26 Jan 2009 16:50:35 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/WetBlog/comments/95304.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/WetBlog/archive/2009/01/26/microsoft-robotics-studio-custom-drive-by-wire.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WetBlog/comments/commentRss/95304.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WetBlog/services/trackbacks/95304.aspx</trackback:ping>
        </item>
        <item>
            <title>Aggiornamento Data Structure and Algorithms Book</title>
            <category>.NET</category>
            <link>http://blogs.ugidotnet.org/WetBlog/archive/2008/12/19/aggiornamento-data-structure-and-algorithms-book.aspx</link>
            <description>&lt;p&gt;Proprio prima di Natale, con il mio amico &lt;a href="http://msmvps.com/blogs/gbarnett/" target="_blank"&gt;Granville&lt;/a&gt; abbiamo rilasciato un aggiornamento del &lt;strong&gt;libro gratuito&lt;/strong&gt; che abbiamo scritto su &lt;strong&gt;algoritmi e strutture dati&lt;/strong&gt;. Sono stati introdotti alcuni capitoli aggiuntivi e revisionati quelli già presenti nella prima release. I numeri lasciano spesso il tempo che trovano però aver ricevuto oltre 14.000 download per l'ultima release fà davvero piacere.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetslackers.com/projects/Data-Structures-And-Algorithms/"&gt;Data Structures and Algorithms: Annotated Reference with Examples&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetslackers.com/projects/Data-Structures-And-Algorithms/"&gt;&lt;img title="dsa" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="406" alt="dsa" src="http://gbarnett.org/BlogPosts/UpdatedversionofthefreeDataStructuresand_961B/dsa.png" width="285" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c22b46c7-ad57-4804-a7b3-61d36f26bd12" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Data%20Structure" rel="tag"&gt;Data Structure&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/WetBlog/aggbug/94982.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Luca Del Tongo</dc:creator>
            <guid>http://blogs.ugidotnet.org/WetBlog/archive/2008/12/19/aggiornamento-data-structure-and-algorithms-book.aspx</guid>
            <pubDate>Fri, 19 Dec 2008 09:00:21 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/WetBlog/comments/94982.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/WetBlog/archive/2008/12/19/aggiornamento-data-structure-and-algorithms-book.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WetBlog/comments/commentRss/94982.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WetBlog/services/trackbacks/94982.aspx</trackback:ping>
        </item>
        <item>
            <title>Braincode: gli artigiani del codice</title>
            <category>ASP.NET</category>
            <link>http://blogs.ugidotnet.org/WetBlog/archive/2008/10/29/braincode-gli-artigiani-del-codice.aspx</link>
            <description>&lt;p&gt;Molto spesso frequentando le community di webdesigner e sviluppo web in generale mi sono imbattuto in banner pubblicitari che effettuano il famoso servizio di conversione &lt;strong&gt;PSD-to-HTML&lt;/strong&gt;. Finalmente anche nel panorama italiano, nasce un progetto piuttosto ambizioso, codename &lt;a href="http://www.braincode.it/" target="_blank"&gt;Braincode&lt;/a&gt; , creato da una web agency italiana &lt;a href="http://www.x-brain.it/"&gt;X-brain&lt;/a&gt;. Il servizio offerto permette di trasformare formati grafici quali &lt;strong&gt;psd, jpeg, png&lt;/strong&gt; in pagine &lt;strong&gt;xhtml e css&lt;/strong&gt;, promettendo una conversione piuttosto rapida nell' arco di &lt;strong&gt;2/3 giorni&lt;/strong&gt; lavorativi, in base alla complessità del progetto. La prima cosa che ho fatto per verificare se davvero fossero artigiani del codice come da slogan è stata quella di spulciare attraverso il portfolio, il codice che hanno prodotto per i clienti e devo dire che in effetti il codice è davvero ben fatto.... ritengo quindi utile avere un servizio del genere per chi sviluppa web sia perchè velocizza lo sviluppo sia perchè avere un codice statico ben fatto fornisce secondo me quello che deve essere cmq l'output generato utilizzando cmq asp.net. E' proprio per questo che il mio migliore amico come al solito è il Repeater!!!&lt;/p&gt;  &lt;p&gt;Per concludere, altrimenti sembra pubblicità occulta, è possibile avere integrazione con diversi cmq, per la verità adesso &lt;b&gt;Joomla!&lt;/b&gt; e &lt;strong&gt;Wordpress &lt;/strong&gt;ma sembra che il supporto venga esteso anche a cms a noi più congeniali, poi alla fin fine l'integrazione la possiamo fare anche da soli :)&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/WetBlog/aggbug/94442.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Luca Del Tongo</dc:creator>
            <guid>http://blogs.ugidotnet.org/WetBlog/archive/2008/10/29/braincode-gli-artigiani-del-codice.aspx</guid>
            <pubDate>Wed, 29 Oct 2008 16:32:41 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/WetBlog/comments/94442.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/WetBlog/archive/2008/10/29/braincode-gli-artigiani-del-codice.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WetBlog/comments/commentRss/94442.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WetBlog/services/trackbacks/94442.aspx</trackback:ping>
        </item>
        <item>
            <title>Data Structures and Algorithms 0.6 released!</title>
            <category>.NET</category>
            <link>http://blogs.ugidotnet.org/WetBlog/archive/2008/09/12/data-structures-and-algorithms-0.6-released.aspx</link>
            <description>&lt;p&gt;Abbiamo appena rilasciato la versione 0.6 della nostra libreria Data Structure and Algorithms. Questa nuove release include come feature principali:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;AVL Tree &lt;/strong&gt;(albero bilanciato) &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Deque&lt;/strong&gt; (double ended queue) &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Radix Sort&lt;/strong&gt; (algoritmo ordinamento) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://www.codeplex.com/dsa/Release/ProjectReleases.aspx?ReleaseId=13900"&gt;Download Data Structures and Algorithms 0.6!&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/WetBlog/aggbug/94002.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Luca Del Tongo</dc:creator>
            <guid>http://blogs.ugidotnet.org/WetBlog/archive/2008/09/12/data-structures-and-algorithms-0.6-released.aspx</guid>
            <pubDate>Fri, 12 Sep 2008 13:24:27 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/WetBlog/comments/94002.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/WetBlog/archive/2008/09/12/data-structures-and-algorithms-0.6-released.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WetBlog/comments/commentRss/94002.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WetBlog/services/trackbacks/94002.aspx</trackback:ping>
        </item>
        <item>
            <title>Download gratuto: Data Structure and Algorithms eBook</title>
            <category>.NET</category>
            <link>http://blogs.ugidotnet.org/WetBlog/archive/2008/08/27/download-gratuto-data-structure-and-algorithms-ebook.aspx</link>
            <description>&lt;p&gt;E' con grande piacere che dopo alcuni mesi di gestazione insieme al mio amico &lt;a target="_blank" href="http://msmvps.com/blogs/gbarnett/"&gt;Granville&lt;/a&gt;, abbiamo pubblicato il libro&lt;/p&gt;
&lt;p&gt; &lt;a href="http://dotnetslackers.com/projects/Data-Structures-And-Algorithms/"&gt;Data Structures and Algorithms: Annotated Reference with Example&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/WetBlog/2368/o_DSA_Book.png" alt="" /&gt; &lt;/p&gt;
&lt;p&gt;Allo stato attuale il libro è ancora un work in progress ma personalmente sono soddisftatto di come sia evoluto nel corso del tempo (sono un pò di parte... ). Il libro è rivolto a tutti coloro che conoscono un linguaggio di programmazione ad oggetti, senza particolari requisiti; l'utilizzo dello pseudo codice pone infatti l'attenzione sulla parte algoritmica piuttosto che su quella di implementazione. La scelta di renderlo totalmente free è data dalla convinzione che fosse la cosa più giusta:) Sono ben accetti quindi consigli suggerimenti etc. etc. &lt;/p&gt;
&lt;p&gt;A livello personale, scrivere un libro in inglese non è stato cosi semplice ma sicuramente sono esperienze che servono ad ampliare i proprio orizzonti, collaborare poi con Granville per me è un piacere ed uno stimolo ad un continuo miglioramento.... quindi spread the word!!!!&lt;/p&gt;
&lt;p&gt;[EDIT] Ricordo che io, e sopratutto Granville, abbiamo provveduto ad implementare in C# tutti gli algoritmi e le strutture dati presenti nel libro; potete trovare l'implementazione su codeplex al  seguente indirizzo&lt;/p&gt;
&lt;p&gt;&lt;a href="http://codeplex.com/dsa" name="DSA"&gt;http://codeplex.com/dsa&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:770de2ca-3705-4abb-a98e-e62e815c151f" class="wlWriterSmartContent"&gt;Technorati Tag: &lt;a rel="tag" href="http://technorati.com/tags/.NET"&gt;.NET&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Data%20Structure"&gt;Data Structure&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/WetBlog/aggbug/93840.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Luca Del Tongo</dc:creator>
            <guid>http://blogs.ugidotnet.org/WetBlog/archive/2008/08/27/download-gratuto-data-structure-and-algorithms-ebook.aspx</guid>
            <pubDate>Wed, 27 Aug 2008 17:45:03 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/WetBlog/comments/93840.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/WetBlog/archive/2008/08/27/download-gratuto-data-structure-and-algorithms-ebook.aspx#feedback</comments>
            <slash:comments>15</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WetBlog/comments/commentRss/93840.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WetBlog/services/trackbacks/93840.aspx</trackback:ping>
        </item>
        <item>
            <title>Padre e figlio ... le dimensioni e le prestazioni contano</title>
            <link>http://blogs.ugidotnet.org/WetBlog/archive/2008/06/30/padre-e-figlio-.-le-dimensioni-e-le-prestazioni-contano.aspx</link>
            <description>&lt;p&gt;Per il compleanno di mia sorella ed in vista della sua imminente partenza per Dublino, ho deciso di regalarle un &lt;strong&gt;Asus Eee PC 900&lt;/strong&gt;; ho acquistato la versione con installato linux per avere &lt;strong&gt;20 Gb&lt;/strong&gt; di memorizzazione &lt;strong&gt;SSD&lt;/strong&gt; (2 schede 4+16). Sono molto soddisfatto dell'acquisto fatto anche se ho dovuto sperimentare alcune specifiche non documentate su cui i produttori come al solito giocano un pò. Dato che mia sorella utilizza regolarmente Windows XP ho deciso in un primo momento di installare suddetto OS.... ho così ottenuto un computer con delle buone performance.... qualche cosa però dentro di me mi ha spinto verso una soluzione un pò più estrema.... il risultato lo vedete qui sotto (cliccare sull'immagine per immagine originale)&lt;img height="22" src="http://www.tuttogratis.it/img/emoticons/_uh_uh.gif" width="25" border="0" /&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/WetBlog/2368/o_HPIM0027.JPG" target="_blank"&gt;&lt;img height="180" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/WetBlog/2368/r_HPIM0027.JPG" width="240" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;Analizzando le specifiche tecniche dell' Eee PC 900 possiamo osservare come questo sia dotato di &lt;strong&gt;un Gb di RAM e di un Celeron 900&lt;/strong&gt;... quindi non proprio in linea con i requisti minimi richiesti da &lt;strong&gt;Windows Vista&lt;/strong&gt;..... ma nell'era della customizzazione perchè non scegliere di farsi un bel Vista su misura eseguendone una vera e propria ricompilazione? Eccoci giunti al punto, utilizzando il mitico &lt;a href="http://www.vlite.net/" target="_blank"&gt;Vlite&lt;/a&gt;. Questo software permette di selezionare le feature di interesse rimuovendo caratteristiche di Windows non necessarie... fatto questo dato che l'eepc non dispone di un lettore CD ho dovuto selezionare una installazione tramite penna USB.... a questo punto eseguo l'installazione di Vista selezionando come disco SSD quello da 16 Gb..... installo tutti i driver e i software necessari (Office 2007, Messenger, Skype etc...) però nota che il sistema è lento .... troppo lento ..... a questo punto mi sono detto... ecco Luca sei il solito testone... ma &lt;a href="http://www.modaco.com/content/asus-eee-pc-http-www-eeeasy-com/261965/installing-vista-on-the-eee-ive-done-it-and-it-works/" target="_blank"&gt;online&lt;/a&gt; ho scoperto che nn solo l'unico... confortato da questo post ho eseguito un breve performance test su entrambi i dispositivi SSD e ho scoperto... che le performance di accesso e trasferimento dati tra i due hanno prestazioni molto diverse... la scheda &lt;strong&gt;SSD da 4 Gb&lt;/strong&gt; offre &lt;strong&gt;prestazioni nettamente superiori&lt;/strong&gt;... quindi l'installazione del' OS deve essere effettuata su quel disco... essendo da 4 Gb è necessario usare VLite per rimuovere le parti nn necessarie... fatto ciò ho eseguito una nuova  installazione, ho ottimizzato la configurazioni dei services, ho ridotto al minimo gli aspetti grafici, ho spostato lo swap file sul disco da 16 Gb e finalmente sono arrivato ad avere un sistema con delle buone performance, come potete osservare nel video che ho registrato :)&lt;/p&gt; &lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-b1dd817b243b9def.skydrive.live.com/embedrowdetail.aspx/Pubblica/eepcVista.wmv" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p align="left"&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/WetBlog/aggbug/93224.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Luca Del Tongo</dc:creator>
            <guid>http://blogs.ugidotnet.org/WetBlog/archive/2008/06/30/padre-e-figlio-.-le-dimensioni-e-le-prestazioni-contano.aspx</guid>
            <pubDate>Mon, 30 Jun 2008 12:53:59 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/WetBlog/comments/93224.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/WetBlog/archive/2008/06/30/padre-e-figlio-.-le-dimensioni-e-le-prestazioni-contano.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WetBlog/comments/commentRss/93224.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WetBlog/services/trackbacks/93224.aspx</trackback:ping>
        </item>
        <item>
            <title>[University Stuff] Simple NAry Tree</title>
            <category>.NET</category>
            <category>University Stuff</category>
            <link>http://blogs.ugidotnet.org/WetBlog/archive/2008/06/26/university-stuff-simple-nary-tree.aspx</link>
            <description>&lt;p&gt;In questi giorni, per un esame di algoritmi distribuiti ho avuto la necessità di lavorare con un particolare &lt;strong&gt;albero nario&lt;/strong&gt;. Genericamente un albero nario è un albero in cui ogni nodo presenta al massino n figli. Un albero binario è un caso particolare di albero nario dove n=2; in figura viene mostrato un albero 3ario.&lt;/p&gt;  &lt;p align="center"&gt;&lt;img src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/WetBlog/2368/o_3aryTree.JPG" /&gt; &lt;/p&gt;  &lt;p align="left"&gt;Vediamo come realizzare un semplice albero nario che permetta di specificare il &lt;strong&gt;fattore di ramificazione&lt;/strong&gt; e che permetta di inserire nodi all'interno dell' albero in modo tale che l'albero venga riempito livello per livello (prima ci creare un nuovo livello si porta a saturazione il livello corrente). Prima di passare alla definizione dell' albero voglio ricordare come un albero nario possa contenere un numero massimo di nodi per una certa altezza h pari a:&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;MaxNumNodi = N^(h+1)-1/N-1&lt;/strong&gt;&lt;/p&gt;  &lt;p align="left"&gt;In riferimento alla figura sopra esposta possiamo osservare che con N=3 ed h=2 otteniamo un numero massimo di nodi pari a 13. Passiamo adesso alla definizione del nostro albero. Per prima cosa definiamo due classi: una container che rappresenta l'albero ed esponde le funzionalità ed una che rappresenta i nodi all'interno di un albero.&lt;/p&gt;  &lt;div&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; NAryTree&amp;lt;T&amp;gt; &lt;span style="color: #0000ff"&gt;where&lt;/span&gt; T:IComparable&amp;lt;T&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; NAryNode&amp;lt;T&amp;gt; root { get; set; }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; branchFactor { get; set; }        &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;         &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; NAryTree(T rootValue, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; BranchFactor)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;             branchFactor = BranchFactor;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;             root = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; NAryNode&amp;lt;T&amp;gt;(rootValue, branchFactor);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;         .&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;         .&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;         .&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;     }    &lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Come possiamo vedere la classe generica NAryTree tiene traccia della radice dell'albero e del fattore di ramificazione (numero di figli o arità). La constraint sul tipo generico in realtà nn viene utilizzata in quanto non si ha ordinamento parziale tra gli elementi ma serve come base per un eventuale albero nario di ricerca. Passiamo adesso alla classe NAryNode:&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; NAryNode&amp;lt;T&amp;gt; &lt;span style="color: #0000ff"&gt;where&lt;/span&gt; T:IComparable&amp;lt;T&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; T &lt;span style="color: #0000ff"&gt;value&lt;/span&gt; { get; set; }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; childnum { get; set; }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; NAryNode&amp;lt;T&amp;gt;[] childs { get; set; }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;  &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; NAryNode(T Value, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; branchFactor)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;value&lt;/span&gt; = Value;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;             childnum = branchFactor;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;             childs = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; NAryNode&amp;lt;T&amp;gt;[branchFactor];&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;     }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Anche la definizione di questa classe risulta abbastanza semplice.... abbiamo una property che memorizza il &lt;strong&gt;valore del nodo&lt;/strong&gt;, &lt;strong&gt;un array di nodi figlio&lt;/strong&gt; ed ancora una proprietà che mi informa sul &lt;strong&gt;numero di nodi figlio &lt;/strong&gt;(proprietà ridondante avendo memorizzato questa info per la classe NaryTree ). Vediamo adesso come inserire per livelli i nodi all'interno dell' albero...&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Insert(T &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;        {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;            NAryNode&amp;lt;T&amp;gt; firstFreeNode = FindFirstFreeNode(root);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;            firstFreeNode.childs[CountImmediateChildren(firstFreeNode)] = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; NAryNode&amp;lt;T&amp;gt;(&lt;span style="color: #0000ff"&gt;value&lt;/span&gt;, branchFactor);            &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;        }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;  &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; CountImmediateChildren(NAryNode&amp;lt;T&amp;gt; node)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;        {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; count = 0;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i = 0; i &amp;lt; node.childnum; i++)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;            {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (node.childs[i] != &lt;span style="color: #0000ff"&gt;default&lt;/span&gt;(NAryNode&amp;lt;T&amp;gt;))&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;                    count++;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;            }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; count;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;        }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;  &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;        &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; NAryNode&amp;lt;T&amp;gt; FindFirstFreeNode(NAryNode&amp;lt;T&amp;gt; root)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt;        {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  20:&lt;/span&gt;            &lt;span style="color: #008000"&gt;//BREADTH FIRST WAY!!!!&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  21:&lt;/span&gt;            Queue&amp;lt;NAryNode&amp;lt;T&amp;gt;&amp;gt; row = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Queue&amp;lt;NAryNode&amp;lt;T&amp;gt;&amp;gt;();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  22:&lt;/span&gt;            row.Enqueue(root);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  23:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;while&lt;/span&gt; (row.Count &amp;gt; 0)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  24:&lt;/span&gt;            {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  25:&lt;/span&gt;                NAryNode&amp;lt;T&amp;gt; currentNode = row.Dequeue();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  26:&lt;/span&gt;                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (CountImmediateChildren(currentNode) &amp;lt; root.childs.Length)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  27:&lt;/span&gt;                {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  28:&lt;/span&gt;                    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; currentNode;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  29:&lt;/span&gt;                }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  30:&lt;/span&gt;                &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; index = 0; index &amp;lt; CountImmediateChildren(currentNode); index++)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  31:&lt;/span&gt;                {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  32:&lt;/span&gt;                    row.Enqueue(currentNode.childs[index]);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  33:&lt;/span&gt;                }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  34:&lt;/span&gt;            }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  35:&lt;/span&gt;            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;default&lt;/span&gt;(NAryNode&amp;lt;T&amp;gt;);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;  36:&lt;/span&gt;        }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Per eseguire l'inserimento ho usato una tecnica molto brute force che nn fa altro che reperire il primo nodo che ha ancora spazio libero tra i propri figli ed eseguire su di esso l' inserimento.... una tecnica più efficiente consiste nel tenere all'interno della classe NaryTree un riferimento all' ultimo nodo inserito in modo tale che ad ogni inserimento non venga fatta una scansione dell' intero albero per trovare il nodo su cui fare l'inserimento. Unica cosa degna di nota è &lt;strong&gt;l'ottimizzazione&lt;/strong&gt; in termini di allocazione dello &lt;strong&gt;stack di sistema&lt;/strong&gt; eseguita all'interno della funzione FindFirstFreeNode grazie all'uso di una &lt;strong&gt;coda&lt;/strong&gt; dove per ogni livello vengono accodati i vari nodi. A questo punto allego la solution dove potete trovare l'intero codice comprensivo di test ed una piccola demo winform che utilizza la libreria &lt;a href="http://research.microsoft.com/research/downloads/Details/c927728f-8872-4826-80ee-ecb842d10371/Details.aspx" target="_blank"&gt;GLEE&lt;/a&gt;. Se ritenete opportuno avere un'implementazione seria di albero nario lasciate un feedback che magari verrà presa in considerazione come feature da aggiungere all'interno di &lt;a href="http://www.codeplex.com/dsa/" target="_blank"&gt;DSA&lt;/a&gt;&lt;/p&gt;
&lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-b1dd817b243b9def.skydrive.live.com/embedrowdetail.aspx/Pubblica/NAryTrees.rar" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;img src="http://blogs.ugidotnet.org/WetBlog/aggbug/93186.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Luca Del Tongo</dc:creator>
            <guid>http://blogs.ugidotnet.org/WetBlog/archive/2008/06/26/university-stuff-simple-nary-tree.aspx</guid>
            <pubDate>Thu, 26 Jun 2008 17:01:37 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/WetBlog/comments/93186.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/WetBlog/archive/2008/06/26/university-stuff-simple-nary-tree.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/WetBlog/comments/commentRss/93186.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/WetBlog/services/trackbacks/93186.aspx</trackback:ping>
        </item>
    </channel>
</rss>