<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FGenerics%2FGeneric_Tree</id>
		<title>Csharp/C Sharp/Generics/Generic Tree - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FGenerics%2FGeneric_Tree"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Tree&amp;action=history"/>
		<updated>2026-04-29T17:48:36Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Tree&amp;diff=1360&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Tree&amp;diff=1360&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:19Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Tree&amp;diff=1361&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Generics/Generic_Tree&amp;diff=1361&amp;oldid=prev"/>
				<updated>2010-05-26T11:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Generic Binary Tree==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
public class Tree&amp;lt;TItem&amp;gt; where TItem : IComparable&amp;lt;TItem&amp;gt; {&lt;br /&gt;
    public Tree(TItem nodeValue) {&lt;br /&gt;
        this.NodeData = nodeValue;&lt;br /&gt;
        this.LeftTree = null;&lt;br /&gt;
        this.RightTree = null;&lt;br /&gt;
    }&lt;br /&gt;
    public void Insert(TItem newItem) {&lt;br /&gt;
        TItem currentNodeValue = this.NodeData;&lt;br /&gt;
        if (currentNodeValue.rupareTo(newItem) &amp;gt; 0) {&lt;br /&gt;
            if (this.LeftTree == null) {&lt;br /&gt;
                this.LeftTree = new Tree&amp;lt;TItem&amp;gt;(newItem);&lt;br /&gt;
            } else {&lt;br /&gt;
                this.LeftTree.Insert(newItem);&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
            if (this.RightTree == null) {&lt;br /&gt;
                this.RightTree = new Tree&amp;lt;TItem&amp;gt;(newItem);&lt;br /&gt;
            } else {&lt;br /&gt;
                this.RightTree.Insert(newItem);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public void WalkTree() {&lt;br /&gt;
        if (this.LeftTree != null) {&lt;br /&gt;
            this.LeftTree.WalkTree();&lt;br /&gt;
        }&lt;br /&gt;
        Console.WriteLine(this.NodeData.ToString());&lt;br /&gt;
        if (this.RightTree != null) {&lt;br /&gt;
            this.RightTree.WalkTree();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public TItem NodeData { get; set; }&lt;br /&gt;
    public Tree&amp;lt;TItem&amp;gt; LeftTree { get; set; }&lt;br /&gt;
    public Tree&amp;lt;TItem&amp;gt; RightTree { get; set; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class Program {&lt;br /&gt;
    static void Main(string[] args) {&lt;br /&gt;
        Tree&amp;lt;char&amp;gt; charTree = new Tree&amp;lt;char&amp;gt;(&amp;quot;M&amp;quot;);&lt;br /&gt;
        InsertIntoTree&amp;lt;char&amp;gt;(charTree, &amp;quot;X&amp;quot;, &amp;quot;A&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;Z&amp;quot;, &amp;quot;Z&amp;quot;, &amp;quot;N&amp;quot;);&lt;br /&gt;
        charTree.WalkTree();&lt;br /&gt;
    }&lt;br /&gt;
    static void InsertIntoTree&amp;lt;T&amp;gt;(Tree&amp;lt;T&amp;gt; tree, params T[] data) where T : IComparable&amp;lt;T&amp;gt; {&lt;br /&gt;
        if (data.Length == 0)&lt;br /&gt;
            throw new ArgumentException(&amp;quot;Must provide at least one data value&amp;quot;);&lt;br /&gt;
        foreach (T datum in data) {&lt;br /&gt;
            tree.Insert(datum);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Generic TreeNode==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
public class Employee {&lt;br /&gt;
    private int _id = 0;&lt;br /&gt;
    private string _name = null;&lt;br /&gt;
    public Employee(int id, string name) {&lt;br /&gt;
        this._id = id;&lt;br /&gt;
        this._name = name;&lt;br /&gt;
    }&lt;br /&gt;
    public int Id {&lt;br /&gt;
        get { return this._id; }&lt;br /&gt;
    }&lt;br /&gt;
    public string Name {&lt;br /&gt;
        get { return this._name; }&lt;br /&gt;
    }&lt;br /&gt;
    public override string ToString() {&lt;br /&gt;
        return this._name;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class TreeNode&amp;lt;T&amp;gt; {&lt;br /&gt;
    private T _nodeData;&lt;br /&gt;
    private ArrayList _childNodes;&lt;br /&gt;
    public TreeNode(T nodeData) {&lt;br /&gt;
        this._nodeData = nodeData;&lt;br /&gt;
        this._childNodes = new ArrayList();&lt;br /&gt;
    }&lt;br /&gt;
    public T Data {&lt;br /&gt;
        get { return this._nodeData; }&lt;br /&gt;
    }&lt;br /&gt;
    public TreeNode&amp;lt;T&amp;gt;[] Children {&lt;br /&gt;
        get { return (TreeNode&amp;lt;T&amp;gt;[])this._childNodes.ToArray(typeof(TreeNode&amp;lt;T&amp;gt;)); }&lt;br /&gt;
    }&lt;br /&gt;
    public TreeNode&amp;lt;T&amp;gt; this[int index] {&lt;br /&gt;
        get { return (TreeNode&amp;lt;T&amp;gt;)this._childNodes[index]; }&lt;br /&gt;
    }&lt;br /&gt;
    public TreeNode&amp;lt;T&amp;gt; AddChild(T nodeData) {&lt;br /&gt;
        TreeNode&amp;lt;T&amp;gt; newNode = new TreeNode&amp;lt;T&amp;gt;(nodeData);&lt;br /&gt;
        this._childNodes.Add(newNode);&lt;br /&gt;
        return newNode;&lt;br /&gt;
    }&lt;br /&gt;
    public override string ToString() {&lt;br /&gt;
        return this._nodeData.ToString();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class Program {&lt;br /&gt;
    static void Main(string[] args) {&lt;br /&gt;
        TreeNode&amp;lt;Employee&amp;gt; rootNode = new TreeNode&amp;lt;Employee&amp;gt;(new Employee(111, &amp;quot;H&amp;quot;));&lt;br /&gt;
        TreeNode&amp;lt;Employee&amp;gt; child1 = rootNode.AddChild(new Employee(222, &amp;quot;B&amp;quot;));&lt;br /&gt;
        rootNode.AddChild(new Employee(333, &amp;quot;T&amp;quot;));&lt;br /&gt;
        child1.AddChild(new Employee(444, &amp;quot;B&amp;quot;));&lt;br /&gt;
        child1.AddChild(new Employee(555, &amp;quot;M&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Walk through a tree recursively==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
public class Tree&amp;lt;TItem&amp;gt; where TItem : IComparable&amp;lt;TItem&amp;gt; {&lt;br /&gt;
    public Tree(TItem nodeValue) {&lt;br /&gt;
        this.NodeData = nodeValue;&lt;br /&gt;
        this.LeftTree = null;&lt;br /&gt;
        this.RightTree = null;&lt;br /&gt;
    }&lt;br /&gt;
    public void Insert(TItem newItem) {&lt;br /&gt;
        TItem currentNodeValue = this.NodeData;&lt;br /&gt;
        if (currentNodeValue.rupareTo(newItem) &amp;gt; 0) {&lt;br /&gt;
            if (this.LeftTree == null) {&lt;br /&gt;
                this.LeftTree = new Tree&amp;lt;TItem&amp;gt;(newItem);&lt;br /&gt;
            } else {&lt;br /&gt;
                this.LeftTree.Insert(newItem);&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
            if (this.RightTree == null) {&lt;br /&gt;
                this.RightTree = new Tree&amp;lt;TItem&amp;gt;(newItem);&lt;br /&gt;
            } else {&lt;br /&gt;
                this.RightTree.Insert(newItem);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public void WalkTree() {&lt;br /&gt;
        if (this.LeftTree != null) {&lt;br /&gt;
            this.LeftTree.WalkTree();&lt;br /&gt;
        }&lt;br /&gt;
        Console.WriteLine(this.NodeData.ToString());&lt;br /&gt;
        if (this.RightTree != null) {&lt;br /&gt;
            this.RightTree.WalkTree();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public TItem NodeData { get; set; }&lt;br /&gt;
    public Tree&amp;lt;TItem&amp;gt; LeftTree { get; set; }&lt;br /&gt;
    public Tree&amp;lt;TItem&amp;gt; RightTree { get; set; }&lt;br /&gt;
}&lt;br /&gt;
class Program {&lt;br /&gt;
    static void Main(string[] args) {&lt;br /&gt;
        Tree&amp;lt;int&amp;gt; tree1 = new Tree&amp;lt;int&amp;gt;(10);&lt;br /&gt;
        tree1.Insert(5);&lt;br /&gt;
        tree1.Insert(1);&lt;br /&gt;
        tree1.Insert(15);&lt;br /&gt;
        tree1.Insert(-2);&lt;br /&gt;
        tree1.Insert(115);&lt;br /&gt;
        tree1.Insert(10);&lt;br /&gt;
        tree1.Insert(114);&lt;br /&gt;
        tree1.Insert(-18);&lt;br /&gt;
        tree1.Insert(1110);&lt;br /&gt;
        tree1.Insert(81);&lt;br /&gt;
        tree1.Insert(18);&lt;br /&gt;
        tree1.WalkTree();&lt;br /&gt;
        Tree&amp;lt;string&amp;gt; tree2 = new Tree&amp;lt;string&amp;gt;(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
        tree2.Insert(&amp;quot;A&amp;quot;);&lt;br /&gt;
        tree2.Insert(&amp;quot;B&amp;quot;);&lt;br /&gt;
        tree2.Insert(&amp;quot;C&amp;quot;);&lt;br /&gt;
        tree2.Insert(&amp;quot;D&amp;quot;);&lt;br /&gt;
        tree2.Insert(&amp;quot;E&amp;quot;);&lt;br /&gt;
        tree2.Insert(&amp;quot;F&amp;quot;);&lt;br /&gt;
        tree2.Insert(&amp;quot;G&amp;quot;);&lt;br /&gt;
        tree2.Insert(&amp;quot;H&amp;quot;);&lt;br /&gt;
        tree2.Insert(&amp;quot;I&amp;quot;);&lt;br /&gt;
        tree2.Insert(&amp;quot;J&amp;quot;);&lt;br /&gt;
        tree2.Insert(&amp;quot;K&amp;quot;);&lt;br /&gt;
        tree2.WalkTree();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>