C# AVLTree插入项无限循环

C# AVLTree插入项无限循环,c#,avl-tree,C#,Avl Tree,我的申请有问题 使用调试器,我发现我的应用程序陷入了无限循环。我附上了一张图片来演示我试图执行程序时发生的错误 但是,在调试时,我得出结论,这是我的AVLTree类中的CompareTo方法或InsertItem方法的问题 程序似乎围绕以下代码行循环- 在我的国家课程中- public int CompareTo(object obj) { Country temp = (Country)obj; return name.CompareTo(

我的申请有问题

使用调试器,我发现我的应用程序陷入了无限循环。我附上了一张图片来演示我试图执行程序时发生的错误

但是,在调试时,我得出结论,这是我的AVLTree类中的
CompareTo
方法或
InsertItem
方法的问题

程序似乎围绕以下代码行循环-

在我的
国家
课程中-

    public int CompareTo(object obj)
    {
        Country temp = (Country)obj;


        return name.CompareTo(temp.name);

    }
在我的
AVLTree
类中(不超过我附加的代码)-

我有一个循环,让贸易伙伴和代码在文件中读取,只是似乎无法摆脱这个循环。问题出在哪里

我有以下课程-

AVLTree
BSTree
BinTree
Country
Node
Form
Program
谢谢你抽出时间

更新-我的
CompareTo
方法所在的整个
国家
类-

private string name;
private float GDP;
private float inflation;
private float tradeBal;
private int HDI;
public LinkedList<String> tradingPartners;
public string x;

public Country()
{

}
public Country(string name, float GDP, float inflation, float tradeBal, int HDI, LinkedList<String> tradingPartners)
{
    this.name = name;
    this.GDP = GDP;
    this.inflation = inflation;
    this.tradeBal = tradeBal;
    this.HDI = HDI;
    this.tradingPartners = tradingPartners;
}
public string CountryName
{
    get { return name; }
    set { name = value; }
}

public float GDPGrowth
{
    get { return GDP; }
    set { GDP = value; }
}

public float Inflation
{
    get { return inflation; }
    set { inflation = value; }
}

public float TradeBalance
{
    get { return tradeBal; }
    set { tradeBal = value; }
}

public int HDIRank
{
    get { return HDI; }
    set { HDI = value; }
}


public LinkedList<String> TradingPartners
    {
        get { return tradingPartners; }
        set { tradingPartners = value; }
    }




public int CompareTo(object obj)
{
    Country temp = (Country)obj;


    return name.CompareTo(temp.name);

}

public override string ToString()
{
    foreach (string y in TradingPartners)
    {
        x += y + ", ";
    }

    return name + ". " + GDP + ", " + inflation + ", " + tradeBal + ", " + HDI + "[ " + x + " ]";
}
私有字符串名称;
私人浮动GDP;
私人浮动通货膨胀;
私人浮动贸易;
私人国际人类发展倡议;
公共链接列表交易伙伴;
公共字符串x;
公共国家()
{
}
公共国家(字符串名称、浮动GDP、浮动通货膨胀、浮动贸易余额、int HDI、LinkedList tradingPartners)
{
this.name=名称;
这是GDP=GDP;
通货膨胀=通货膨胀;
this.tradeBal=tradeBal;
this.HDI=HDI;
this.tradingPartners=tradingPartners;
}
公共字符串国家名称
{
获取{返回名称;}
设置{name=value;}
}
公共浮动GDPGrowth
{
获取{返回GDP;}
设置{GDP=value;}
}
公共浮动通货膨胀
{
获取{返回通货膨胀;}
设置{inflation=value;}
}
公共浮动贸易差额
{
获取{return tradeBal;}
设置{tradeBal=value;}
}
公共int HDIRank
{
获取{return HDI;}
设置{HDI=value;}
}
公共LinkedList TradingPartners
{
获取{return tradingPartners;}
设置{tradingPartners=value;}
}
公共整数比较(对象对象对象)
{
国家温度=(国家)obj;
返回name.CompareTo(临时名称);
}
公共重写字符串ToString()
{
foreach(TradingPartners中的字符串y)
{
x+=y+“,”;
}
返回名称+“+GDP+”、“+inflation+”、“+tradeBal+”、“+HDI+”[“+x+”]”;
}

我希望这能有所帮助,我不认为这是我的AVLTree,因为我曾经用过一次,没有出现任何问题。我忘了添加,代码在我的
CompareTo
和我的
insertItem
方法之间不断地循环(直到我粘贴它的地方,不会再进一步了)。

CompareTo
中有一个对
name
的引用;请显示
compare to
包含的整个类。看起来好像
CompareTo
发生在某个无限递归中。树也可能通过包含循环引用而包含循环。此处信息不足。在调试器中逐步检查代码,并查看其循环的确切位置。假设
Country
类中的
name
是一个字符串,没有理由认为你的
的比较应该是问题所在。你为什么在
插入项中使用
ref
关键字?@MattBurland我路过
ref
我以前在一个项目组合中使用过它,我们被指示使用
ref
关键字,所以我将项目组合任务重新用于生成此赋值。@MattBurland它在
CompareTo
insertItem
方法之间循环,直到我粘贴它的地方。它不断地来回移动。
AVLTree
BSTree
BinTree
Country
Node
Form
Program
private string name;
private float GDP;
private float inflation;
private float tradeBal;
private int HDI;
public LinkedList<String> tradingPartners;
public string x;

public Country()
{

}
public Country(string name, float GDP, float inflation, float tradeBal, int HDI, LinkedList<String> tradingPartners)
{
    this.name = name;
    this.GDP = GDP;
    this.inflation = inflation;
    this.tradeBal = tradeBal;
    this.HDI = HDI;
    this.tradingPartners = tradingPartners;
}
public string CountryName
{
    get { return name; }
    set { name = value; }
}

public float GDPGrowth
{
    get { return GDP; }
    set { GDP = value; }
}

public float Inflation
{
    get { return inflation; }
    set { inflation = value; }
}

public float TradeBalance
{
    get { return tradeBal; }
    set { tradeBal = value; }
}

public int HDIRank
{
    get { return HDI; }
    set { HDI = value; }
}


public LinkedList<String> TradingPartners
    {
        get { return tradingPartners; }
        set { tradingPartners = value; }
    }




public int CompareTo(object obj)
{
    Country temp = (Country)obj;


    return name.CompareTo(temp.name);

}

public override string ToString()
{
    foreach (string y in TradingPartners)
    {
        x += y + ", ";
    }

    return name + ". " + GDP + ", " + inflation + ", " + tradeBal + ", " + HDI + "[ " + x + " ]";
}