zoukankan      html  css  js  c++  java
  • cs61b lab10

    运行结果:

    Creating 2-node tree.
    Testing parent().
    
    Testing insertChild().  Adding two more nodes to the 2-node tree.
    Adding two more nodes to the 4-node tree.
    1132
    2131
    The tree looks like this:
    1
      11
      12
      13
        131
        132
    [The above sequence should be 1, 11, 12, 13, 131, 132.]
    
    Testing removeLeaf().  Removing one node from 6-node tree.
    Removing another node from 5-node tree.
    Attempting to remove non-leaf node from 4-node tree.
      Operation should have no effect.
    Attempting to remove invalid node from 4-node tree.
    The tree looks like this:
    1
      12
      13
        131
        132
    [The above sequence should be 1, 12, 13, 131.]
    Removing remaining nodes from 4-node tree.

    part1:实现parent()

     public TreeNode parent() throws InvalidNodeException {
        if(isValidNode()){
            if(this==myTree.root){
                return new SibTreeNode();
            }
            else{
                return this.parent;
            }
        }
        else{
            throw new InvalidNodeException();
        }
      }
    View Code

    part2:insertChild()分的情况比较多,代码也调整了很久,也比较长。

     1  public void insertChild(Object item, int c) throws InvalidNodeException {
     2     if(isValidNode()){
     3         if(this.firstChild==null||!this.firstChild.valid){
     4             SibTreeNode treenode=new SibTreeNode(myTree,item);
     5             this.firstChild=treenode;
     6             treenode.parent=this;
     7             myTree.size++;
     8         }
     9         else{
    10             SibTreeNode node=this.firstChild;
    11             if(c==1){
    12                 SibTreeNode newnode=new SibTreeNode(myTree,item);
    13                 newnode.parent=this;
    14                 newnode.nextSibling=node;
    15                 this.firstChild=newnode;
    16                 myTree.size++;
    17                     }
    18             else if(c<=this.children()){
    19             while(c>2){
    20                 node=node.nextSibling;
    21                 c--;
    22             }
    23             SibTreeNode newnode=new SibTreeNode(myTree,item);
    24             newnode.parent=this;
    25             newnode.nextSibling=node.nextSibling;
    26             node.nextSibling=newnode;
    27             myTree.size++;
    28         }
    29         else{
    30             while(node.nextSibling!=null){
    31                 node=node.nextSibling;
    32             }
    33             SibTreeNode newnode=new SibTreeNode(myTree,item);
    34             newnode.parent=this;
    35             node.nextSibling=newnode;
    36             myTree.size++;
    37         }
    38         }
    39         
    40     }
    41     else{
    42         throw new InvalidNodeException();
    43     }
    44   }
    View Code

    part3:removeLeaf()也是需要考虑leaf在child中的具体位置,分了几种情况。

     1 public void removeLeaf() throws InvalidNodeException {
     2       if(isValidNode()){
     3     if(this.firstChild!=null&&this.firstChild.isValidNode())
     4         return;
     5     else{
     6         if(this==myTree.root){
     7             this.valid=false;
     8             myTree.size--;
     9         }
    10         else if(this==this.parent.firstChild){
    11          this.parent.firstChild=this.nextSibling;
    12          this.valid=false;
    13          myTree.size--;
    14      }
    15      else if(this.nextSibling==null||!this.nextSibling.isValidNode())
    16         {
    17          this.valid=false;
    18          myTree.size--;
    19         }
    20     else{
    21         SibTreeNode node=this.parent.firstChild;
    22         while(node.nextSibling!=this)
    23             node=node.nextSibling;
    24         node.nextSibling=this.nextSibling;
    25         this.valid=false;
    26         myTree.size--;
    27     }
    28   }
    29   }
    30       else{
    31           throw new InvalidNodeException();
    32       }
    33 }
    View Code
  • 相关阅读:
    django rest_framework中将json输出字符强制为utf-8编码
    Java
    Java
    Oracle
    IDEA
    Ubuntu
    Ubuntu
    Ubuntu
    Ubuntu
    Oracle
  • 原文地址:https://www.cnblogs.com/lyz1995/p/7256898.html
Copyright © 2011-2022 走看看