• 用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;
                }
            }                
        }
    }

  • 相关阅读:
    THD 变量存入threads中
    一个简单的optimizer_trace示例
    LINUX HOOK
    网易杭研后台技术中心的博客
    INNOSQL.官网
    淘宝 印风 UDF
    mysql原创博客
    mysql 主从图
    THD
    开源利器函数调用图
  • 原文地址:https://www.cnblogs.com/dfsxh/p/1315980.html
Copyright © 2020-2023  润新知