已知这个
二元查找树结构是public unsafe struct BSTreeNode
        {
            public int m_nValue;
            public BSTreeNode* m_pLeft;
            public BSTreeNode* m_pRight;
        };要求的方法://插入
public unsafe static void Insert_node(BSTreeNode* node, int value)
        {} //中序遍历
public unsafe static void Inorder(BSTreeNode* node)
        {}

解决方案 »

  1.   

    自己写了个方法,但是有问题,也找不出原因来public unsafe static void Insert_node(BSTreeNode* node, int value)
            {
                if (value < (*node).m_nValue)
                    if ((*node).m_pLeft != null)
                        Insert_node((*node).m_pLeft, value);
                    else
                    {
                        BSTreeNode p;
                        p.m_pLeft = null;
                        p.m_pRight = null;
                        p.m_nValue = value;    
                        (*node).m_pLeft = &p;
                    }
                if (value > (*node).m_nValue)
                    if ((*node).m_pRight != null)
                        Insert_node((*node).m_pRight, value);
                    else
                    {
                        BSTreeNode p;
                        p.m_pLeft = null;
                        p.m_pRight = null;
                        p.m_nValue = value;
                        (*node).m_pRight = &p;
                    }
                          
            }
    public unsafe static void Inorder(BSTreeNode* node)
            {
                try
                {
                    if ((*node).m_pLeft != null)
                    {
                        Inorder((*node).m_pLeft);
                    }
                    Console.Write((*node).m_nValue + ", ");              if ((*node).m_pRight != null)
                  Inorder((*node).m_pRight);
                }
                catch
                {
                    //throw.Exception(Exception else);
                }
            }
      

  2.   

    哈哈,麦迷逻辑上基本没错,但是在Insert_Node方法中,如果要插入的节点的值与当前节点的值相同的话就不插入了,可以将<改成<=,其他还有什么问题没看出来,你能说下具体发生什么错误吗