Java 运行时堆栈溢出异常

Java 运行时堆栈溢出异常,java,c#,visual-studio,Java,C#,Visual Studio,运行此代码时出现异常 public void insertRBT(int value) { //BNode newNode = new BNode(value); root=insertNode(root, value,null); count += 1; } protected BNode insertNode(BNode rt, int value, BNode pare

运行此代码时出现异常

public void insertRBT(int value)
        {
            //BNode newNode = new BNode(value);
            root=insertNode(root, value,null);
            count += 1;
        }

        protected BNode insertNode(BNode rt, int value, BNode parent)
        {
            BNode grandParent, greatGrandParent;
            if (rt == null)
            {

                BNode newNode = new BNode(value, parent);
                parent = newNode.parent;
                if (parent != null)
                {
                    if (value > parent.value)
                    {
                        parent.right = newNode;
                    }
                    else {
                        parent.left = newNode;
                    }
                }
                if (count > 0)
                {
                    newNode.red = true;
                }
                else
                {
                    newNode.red = false;
                }
                //added

                insertedNode = newNode;
                grandParent = null;
                greatGrandParent = null;
                insertFix(newNode,parent,grandParent,greatGrandParent);
                return newNode;
            }
            else if (value.CompareTo(rt.value) < 0)
            {
                rt.left = insertNode(rt.left, value, rt);
                return rt;
            }else //if(value.CompareTo(rt.value)> 0)
            {
                rt.right = insertNode(rt.right, value, rt);
                return rt;
            }
}
//B节点类

class BNode
    {
        public int value;
        public BNode left;
        public BNode right;
        public BNode parent; //check
        public Boolean red = true; // red=false - indicates black

        public BNode(int num, BNode parent)
        {
            value = num;
            left = null;
            right = null;
            this.parent = parent;
        }
}

在测试代码时,我添加了50、75、40、45、25-当我输入25时,出现了异常。

请包括stacktraceasking about Homegraphy?@MattBucci,这个问题绝对不相关。RedBlackTree.exe!RedBlackTree.RedBlackTree.insertNode(RedBlackTree.BNode rt,int值,RedBlackTree.BNode父节点)第157行C#RedBlackTree.exe!RedBlackTree.RedBlackTree.insertNode(RedBlackTree.BNode rt,int值,RedBlackTree.BNode父节点)第153行C#RedBlackTree.exe!RedBlackTree.RedBlackTree.insertNode(RedBlackTree.BNode rt,int值,RedBlackTree.BNode父节点)第157行C#上面是堆栈跟踪,由一系列行组成。这些行表示将值与根值进行比较的位置。看起来您处于循环中,这就是堆栈变满的原因。您可能正在无限循环中递归插入新的子节点。
class BNode
    {
        public int value;
        public BNode left;
        public BNode right;
        public BNode parent; //check
        public Boolean red = true; // red=false - indicates black

        public BNode(int num, BNode parent)
        {
            value = num;
            left = null;
            right = null;
            this.parent = parent;
        }
}