qwe461662072 2015-08-07 18:29 采纳率: 0%
浏览 1834
已结题

C#实现二叉树查找删除插入

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

namespace ConsoleApplication3
{
class Node
{
private object _data;
private Node left;
private Node right;
private Node _head;
public int data;
private string str;
public object Date
{
get { return _data; }
set { _data = value; }
}
public Node Left
{
get { return left; }
set { left = value; }
}
public Node Right
{
get { return right; }
set { right = value; }
}
public Node(object date)
{
_data = date;
}
public override string ToString()
{
return _data.ToString();
}
public Node Head
{
get { return _head; }
}
public Node(string strs)
{
str = strs;
_head = new Node(str[0]);
Add(_head,0);

}
public void Add(Node prer, int index)
{
int leftIndex = 2 * index + 1;
if(leftIndex<str.Length)
{
if(str[leftIndex]!='#')
{
prer.left = new Node(str[leftIndex]);
Add(prer.left,leftIndex);
}
}
int rightIndex = 2 * index + 2;
if (rightIndex < str.Length)
{
if(str[leftIndex]!='#')
{
prer.right = new Node(str[rightIndex]);
Add(prer.right, rightIndex);
}
}

    }
    public void XianOrder(Node node)
    {
        if (node != null)
        {
            Console.WriteLine(node.ToString());
            XianOrder(node.left);
            XianOrder(node.right);
        }
    }
    public void ZhongOrder(Node node)
    {
        if (node != null)
        {
            ZhongOrder(node.left);
            Console.WriteLine(node.ToString());
            ZhongOrder(node.right);
        }
    }
    public void HouOrder(Node node)
    {
        if (node != null)
        {
            HouOrder(node.left);
            HouOrder(node.right);
            Console.WriteLine(node.ToString());
        }
    }
    public Node Search(int i)
    {
        Node curren = _head;
        while (true)
        {
            if (i < curren.data)
            {
                if (curren.left == null)
                {
                    break;
                    curren = curren.left;
                }
            }
            else if (i > curren.data)
            {
                if (curren.right == null)
                {
                    break;
                    curren = curren.right;
                }
            }
            else
            {

                return curren;
            }
        }
        if (curren.data != i)
        {

            return null;
        }

        return curren;
    }
    static void Main(string[] args)
    {
        Node node = new Node("1234567####8");
        node.XianOrder(node._head);
        Console.WriteLine();
        node.ZhongOrder(node.Head);
        Console.WriteLine();
        node.HouOrder(node.Head);
        Console.WriteLine();
        Node n = node.Search(3);
        Console.WriteLine("所查的节点是:"+n._data);
        Console.Read();
    }

            怎么在它之上添加查询子节点等方法,
  • 写回答

3条回答 默认 最新

  • threenewbee 2015-08-07 22:19
    关注
    评论

报告相同问题?

悬赏问题

  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集