Java树排序

Java树排序,java,recursion,tree,Java,Recursion,Tree,对于学校,我必须用Java编写自己的树类。如果您也有问题,请编写名为idSorted的函数,由谁检查树是否按顺序排序。它必须是递归的,我应该使用getMin和getMax方法。我知道我是这样检查的: getLeft().getMax() <= this.getValue() && this.getRight().getMin(); 您有多个问题: 您提到的检查条件不正确 将类的名称更改为更合适的节点 如果您不想要容器[Tree]类,您应该有一个属性根 在isShort()

对于学校,我必须用Java编写自己的树类。如果您也有问题,请编写名为idSorted的函数,由谁检查树是否按顺序排序。它必须是递归的,我应该使用getMin和getMax方法。我知道我是这样检查的:

getLeft().getMax() <= this.getValue() && this.getRight().getMin();

您有多个问题:

  • 您提到的检查条件不正确
  • 将类的名称更改为更合适的节点
  • 如果您不想要容器[Tree]类,您应该有一个属性根
  • 在isShort()方法中使用根值(当前命名为Tree的节点类的实例)检查条件,然后在左侧和右侧节点上调用isShort()(如果存在)(这不是null)

  • 在您学习的过程中,我将编码部分留给您作为练习。

    我尝试了一些东西,希望是正确的

    public boolean isSorted(){
        if(this.getvalue()<getMin()||this.getvalue()>getMax()){
            return false;
        }
        //Schaut im linken Teil
        boolean linksrichtig =false;
        //gibt es nen linken Unterbaum
        if(this.getleft()!=null){
            //linker unterbaum kleiner?
            if(this.getleft().getvalue()<this.getvalue()){
                //rekursiv weiterschauen richtung links
                linksrichtig = isSorted();
            }else{
                //wenn größer dann falsch
                linksrichtig = false;
            }
        }else{
            //wenn links nichts exestiert dann richtig
            linksrichtig = true;
        }
        //Schaut im rechten Teil
        boolean rechtsrichtig =false;
        //gibt es nen rechten Unterbaum
        if(this.getright()!=null){
            //rechter unterbaum größer oder gleich?
            if(this.getright().getvalue()>=this.getvalue()){
                //rekursiv weiterschauen richtung rechts
                rechtsrichtig = isSorted();
            }else{
                //wenn kleiner dann falsch
                rechtsrichtig = false;
            }
        }else{
            //wenn rechts nichts exestiert dann richtig
            rechtsrichtig = true;
        }
        return (rechtsrichtig&&linksrichtig);
    }
    
    public boolean isSorted(){
    if(this.getvalue()getMax()){
    返回false;
    }
    //我是林登泰尔
    布尔linksrichtig=false;
    //这是一个很好的例子
    if(this.getleft()!=null){
    //链接器unterbaum kleiner?
    如果(this.getleft().getvalue()=this.getvalue()){
    //rekursiv weiterschauen richtung rechts
    rechtsrichtig=isSorted();
    }否则{
    //韦恩·克莱纳·达恩·法尔希
    rechtsrichtig=false;
    }
    }否则{
    //这是一个很好的例子
    rechtsrichtig=真;
    }
    返回(rechtsrichtig和&linksrichtig);
    }
    
    public boolean isSorted(){
        if(this.getvalue()<getMin()||this.getvalue()>getMax()){
            return false;
        }
        //Schaut im linken Teil
        boolean linksrichtig =false;
        //gibt es nen linken Unterbaum
        if(this.getleft()!=null){
            //linker unterbaum kleiner?
            if(this.getleft().getvalue()<this.getvalue()){
                //rekursiv weiterschauen richtung links
                linksrichtig = isSorted();
            }else{
                //wenn größer dann falsch
                linksrichtig = false;
            }
        }else{
            //wenn links nichts exestiert dann richtig
            linksrichtig = true;
        }
        //Schaut im rechten Teil
        boolean rechtsrichtig =false;
        //gibt es nen rechten Unterbaum
        if(this.getright()!=null){
            //rechter unterbaum größer oder gleich?
            if(this.getright().getvalue()>=this.getvalue()){
                //rekursiv weiterschauen richtung rechts
                rechtsrichtig = isSorted();
            }else{
                //wenn kleiner dann falsch
                rechtsrichtig = false;
            }
        }else{
            //wenn rechts nichts exestiert dann richtig
            rechtsrichtig = true;
        }
        return (rechtsrichtig&&linksrichtig);
    }