zoukankan      html  css  js  c++  java
  • CS 61B lab10

    part one parent()

      public TreeNode parent() throws InvalidNodeException {
        // REPLACE THE FOLLOWING LINE WITH YOUR SOLUTION TO PART I.  
          if(!this.valid){
              throw new InvalidNodeException();
          }
          if(this.parent==null)
          return new SibTreeNode();
          return this.parent;
      }

    part two insertChild()

     public void insertChild(Object item, int c) throws InvalidNodeException {
        // FILL IN YOUR SOLUTION TO PART II HERE.
          if(!this.valid){throw new InvalidNodeException();}
          SibTreeNode Child = new SibTreeNode(this.myTree,item);
          Child.parent=this;
          this.myTree.size++;
          if(this.firstChild==null){
              this.firstChild=Child;
              return;
          }
          if(c<1){c=1;}
          if(c==1){
              Child.nextSibling=this.firstChild;
              this.firstChild=Child;          
          }else{
              int num=2;
              SibTreeNode CurrentNode=this.firstChild;
              while(num<c){
                  num++;
                  if(CurrentNode.valid&&CurrentNode.nextSibling!=null){
                  CurrentNode=CurrentNode.nextSibling;              
                  }
              }
              Child.nextSibling=CurrentNode.nextSibling;
              CurrentNode.nextSibling=Child;
          }
          
      }

    part three removeLeaf()

    public void removeLeaf() throws InvalidNodeException {
        // FILL IN YOUR SOLUTION TO PART III HERE.
          if(!this.valid){throw new InvalidNodeException();}
          if(myTree.size==1){myTree.size--;this.myTree.root=null;this.valid=false;return;}
          if(this.firstChild==null&&this.myTree.size>1){
               this.myTree.size--;
               if(this.myTree.size==1){this.valid=false;}
               SibTreeNode leafParent=this.parent;
               this.valid=false;
               SibTreeNode CurrentNode = leafParent.firstChild;
               if(!CurrentNode.valid){
                   leafParent.firstChild=CurrentNode.nextSibling;
                   return;
               }
               while(true){
                   if(!CurrentNode.nextSibling.valid){
                       CurrentNode.nextSibling=CurrentNode.nextSibling.nextSibling;
                       return;
                   }
                   CurrentNode=CurrentNode.nextSibling;
                   
               }
               
          }

    运行结果:

  • 相关阅读:
    模板与继承之艺术——空基类优化
    模板的多态(静多态)威力
    Linux在vi编辑模式下如何查找
    PHP var_dump() 函数
    PHP empty() 函数
    IOS连接代理后自动关闭
    charles:屏蔽web网页的抓包信息(proxy)
    Python-unittest单元测试框架总结
    fiddler过滤域名:仅显示指定的域名
    Java中System.getProperties()方法获取的系统属性
  • 原文地址:https://www.cnblogs.com/developerchen/p/7270096.html
Copyright © 2011-2022 走看看