我在C#中建立了一个函数型非递归AVL树。节点如下所示:

class AvlNode
{
     public int data;
     public int balance;
     public AvlNode left;
     public AvlNode right;
     public AvlNode parent;

 }static AvlNode _root = null;

公众走开,加上指针。
struct
{
     int data;
     int balance;
     struct AvlNode *left;
     struct AvlNode *right;
     struct AvlNode *parent;
}

但我该怎么处理static AvlNode _root = null;
我用它来追踪树根。

最佳答案

您的结构应该是(AvlNode作为结构的名称)

struct AvlNode
{
     int data;
     int balance;
     struct AvlNode *left;
     struct AvlNode *right;
     struct AvlNode *parent;
}

如果您有多个翻译单元,请不要使用static(如果整个代码都在一个.c文件中,则可以)。
对多个翻译单元使用extern
在标题中声明extern struct AvlNode *root;
struct AvlNode *root = NULL;在您的“.c”文件中。

10-08 20:14