用C#写二叉数

using System;
using System.Collections.Generic;
using System.Text;

namespace BinaryTree
{
   
class Program
    {
       
static void Main(string[] args)
        {
            BTree bt
= new BTree();
            Node parent
= null, current = null;
           
int i = 1;
           
while(i>0)
            {
                Console.WriteLine(
"Input an integer");
                i
= int.Parse(Console.ReadLine());
                bt.find(i,
ref parent, ref current);
               
if (current != null) Console.WriteLine("{0}Already exist!", i);
               
else
                {
                    bt.addNew(i, parent, current);
                    Console.WriteLine(
"{0} inserted!", i);
                }
            };
           
return;
        }
    }
   
class Node
    {
       
public int ivalue;
       
public Node lchild;
       
public Node rchild;

       
public Node(int i, Node l, Node r)
        {
            ivalue
= i;
            lchild
= l;
            rchild
= r;
        }
    }
   
class BTree
    {
       
public Node ROOT;
       
public BTree()
        {
            ROOT
= null;
        }

       
public bool contain(int element)
        {
            Node parent
= null, currentNode = null;
            find(element,
ref parent, ref currentNode);
           
if(currentNode == null) return false;
           
return true;
        }
       
       
public bool add(int element)
        {
            Node tmp, parent
= null, currentNode = null;
            find(element,
ref parent, ref currentNode);
           
if(currentNode != null)
            {
               
return false;   // already there
            }
           
else
            {
                tmp
= new Node(element, null, null);
               
if(parent == null) // empty tree
                    ROOT = tmp;
               
else
                   
if(element<parent.ivalue)
                        parent.lchild
=tmp;
                   
else   
                        parent.rchild
= tmp;
            }
           
return true;
        }

       
// must make sure that the value is not in the tree
        public void addNew(int element, Node parent, Node currentNode)
        {
           
//if(currentNode != null) return false;
            Node tmp;
           
// currentNode should be null
            tmp = new Node(element, null, null);
           
if (parent == null) // empty tree
                ROOT = tmp;
           
else
               
if (element < parent.ivalue)
                    parent.lchild
= tmp;
               
else
                    parent.rchild
= tmp;
        }
                   
       
public void find(int element, ref Node parent, ref Node currentNode)
        {
            currentNode
= ROOT;
            parent
= null;
           
while ((currentNode != null) && (currentNode.ivalue != element))
            {
                parent
= currentNode;
               
if (element < currentNode.ivalue) // left
                    currentNode = currentNode.lchild;
               
else    // right
                    currentNode = currentNode.rchild;
            }
        }                
    }
}

原文地址:https://www.cnblogs.com/dfsxh/p/1315980.html