=input){t.left.value=input;t.left.left=spanclass="code-keyword"null/span;t.right.right=spanclass="code-keyword"null/span;count++;}/pre/code与{体C3}和{的C4}与{C5的}添加和更改的代码是大胆的。下一步新报表添加不正确的左边和右边的分支被用来在空任务。这些任务的方式并不需要BT的构造函数设置为null已经OriginalGriff:安德烈在一定程度上是正确的,但他的解决方案不建立一个完整的树-他将覆盖任何现有的节点,当你提供。不同的值。如果你的树值是为了创建一个如树{5233}然后你需要检查已经是节点存在,然后再创建新的。此外,我也不会通过节点到您的add方法:使其工作,而不是对当前实例:{C7-}两件事情发生:1)你的数量是相当无用:它返回已被cretaed,而不是数量,这是在使用中,或在这棵树的节点总数。如果覆盖的节点(如安德烈在他的例子一样),它不会降低计数。你会更好实施Count属性算在这一点上德树的节点数目:{C8的}2)你可能不希望打印的方法-这个词在计算特定的含义。相反,考虑提供一个ToString方法返回一个字符串作为整个树:codeprelang="c#"spanclass="code-keyword"public/spanspanclass="code-keyword"override/spanspanclass="code-keyword"string/spanToString(){StringBuildersb=spanclass="code-keyword"new/spanStringBuilder();sb.Append(Value.ToString());spanclass="code-keyword"if/span(Left!=spanclass="code-keyword"null/span||Right!=spanclass="code-keyword"null/span){sb.Append(spanclass="code-string""/spanspanclass="code-string"imgsrc="/script/Forums/Images/smiley_frown.gif"align="top"alt="Frown|:("//span);spanclass="code-keyword"if/span(Left!=spanclass="code-keyword"null/span){sb.Append(Left.ToString());}sb.Append(spanclass="code-string""/spanspanclass="code-string","/span);spanclass="code-keyword"if/span(Right!=spanclass="code-keyword"null/span){sb.Append(Right.ToString());}sb.Append(spanclass="code-string""/spanspanclass="code-string")"/span);}spanclass="code-keyword"return/spansb.ToString();}/pre/code。|阿肖克Gowtham。|未分类的问答|编程通用" /> =input){t.left.value=input;t.left.left=spanclass="code-keyword"null/span;t.right.right=spanclass="code-keyword"null/span;count++;}/pre/code与{体C3}和{的C4}与{C5的}添加和更改的代码是大胆的。下一步新报表添加不正确的左边和右边的分支被用来在空任务。这些任务的方式并不需要BT的构造函数设置为null已经OriginalGriff:安德烈在一定程度上是正确的,但他的解决方案不建立一个完整的树-他将覆盖任何现有的节点,当你提供。不同的值。如果你的树值是为了创建一个如树{5233}然后你需要检查已经是节点存在,然后再创建新的。此外,我也不会通过节点到您的add方法:使其工作,而不是对当前实例:{C7-}两件事情发生:1)你的数量是相当无用:它返回已被cretaed,而不是数量,这是在使用中,或在这棵树的节点总数。如果覆盖的节点(如安德烈在他的例子一样),它不会降低计数。你会更好实施Count属性算在这一点上德树的节点数目:{C8的}2)你可能不希望打印的方法-这个词在计算特定的含义。相反,考虑提供一个ToString方法返回一个字符串作为整个树:codeprelang="c#"spanclass="code-keyword"public/spanspanclass="code-keyword"override/spanspanclass="code-keyword"string/spanToString(){StringBuildersb=spanclass="code-keyword"new/spanStringBuilder();sb.Append(Value.ToString());spanclass="code-keyword"if/span(Left!=spanclass="code-keyword"null/span||Right!=spanclass="code-keyword"null/span){sb.Append(spanclass="code-string""/spanspanclass="code-string"imgsrc="/script/Forums/Images/smiley_frown.gif"align="top"alt="Frown|:("//span);spanclass="code-keyword"if/span(Left!=spanclass="code-keyword"null/span){sb.Append(Left.ToString());}sb.Append(spanclass="code-string""/spanspanclass="code-string","/span);spanclass="code-keyword"if/span(Right!=spanclass="code-keyword"null/span){sb.Append(Right.ToString());}sb.Append(spanclass="code-string""/spanspanclass="code-string")"/span);}spanclass="code-keyword"return/spansb.ToString();}/pre/code。|阿肖克Gowtham。,未分类的问答,编程通用,orcode.com(或代码)是程序学习分享的乐圆" />

返回首页

?在C#中如何实现二叉树:我尝试这样做。我做一个树类
 60;

class BT

    {

 

        private BT left;

        internal BT Left

        {

            get { return left; }

            set { left = value; }

        }

 

        private BT right;

        internal BT Right

        {

            get { return right; }

            set { right = value; }

        }

 

        private int value;

        public int Value

        {

             get { return this.value; }

                set { this.value = value; }

        }

 

        static private int count=0;

        public static int Count

        {

            get { return BT.count; }

            set { BT.count = value; }

        }

 

        public BT()

        {

            left = null;

            right = null;

            value = 0;

        }

        public void Add(BT t,int input)

        {

            if (t.value == 0)

            {

                t.value = input;

                t.Left = null;

                t.Right= null;

                count++;

            }

            else if(t.value>=input)

            {

                t.left.value = input;

                t.left.left = null;

                t.right.right = null;

                count++;

            }

            else if(t.value<input)

            {

                t.right.value = input;

                t.left.left = null;

                t.right.right = null;

                count++;

            }

        }

        public void Print(BT tree)

        {

            Form1 o = new Form1();

            if (tree.right != null)

                Print(tree.right);

            o.richTextBox1.AppendText(tree.value.ToString());

            if (tree.left != null)

                Print(tree.left);

        }

    }

}
,调用此代码
{C},它提供了运行时间错误"未将对象引用设置到对象的实例。"上线t.left.value =输入;

回答

评论会员: 时间:2
O