持有linkedlist的java树节点

djp7away  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(321)

好的,我要做的是让bTree的每个节点都有一个linkedlist。
例如:

Node B holds - bill, buff, blank
Then its left child A holds - ant, art, app
And its right child C holds - cat, can crib
And so on;

这是我到目前为止,但我不确定这是最好的方式做到这一点

public class BSTreeDic {
public class LinkNode{
    LinkNode word;
    LinkNode next;
    public void add(LinkNode wd, LinkNode def){
        if (word==null){
            word=wd;
            next=def;
        }else{
            LinkNode currentNode = word;
            while(currentNode.next!=null){
                currentNode=currentNode.next;
            }
            currentNode.next=def;
            next=currentNode.next;
        }
    }
}
public class Node{
    LinkNode word;
    Node left;
    Node right;
    Node(LinkNode wd, LinkNode def){
        word = new LinkNode();
        word.add(wd, def);
        left=right=null;
    }

}
}
bihw5rsg

bihw5rsg1#

如果不想使用(和导入)类java.util.linkedlist:

public class LinkNode {  //Please begin class names with caps
    String word;
    LinkNode next = null;
    LinkNode(String w) {
        word = w;
    }
}

public class Node {
    LinkedList<Node> word;
    Node left;
    Node right;

    Node(String wd, String def) {
        word = new LinkedList<Node>();
        word.add(def);
        word.add(wd);
    }
}

另外,对于二叉搜索树,如果搜索是按字母顺序的,那么剩下的孩子应该早于他们的父母。
还应该为linknode和node提供add()和remove()方法,以添加和删除节点。一种可能性是调用node treenode,并生成类node的linknode和treenode子类。

mlmc2os5

mlmc2os52#

你很接近。我唯一建议添加的是一个实际的linkedlist对象,它包含对列表头的引用,并允许添加、删除、检索等

public class LinkedList {
  ListNode head;
  ListNode tail;

  public void addElement(ListNode ln) {
    if (head == null) {
      head = ln;
      tail = ln;
    }
    else {
      ListNode currentNode = head;
      while(currentNode.next!= null) {
        currentNode = currentNode.next;
      }
      currentNode.next = ln;
      tail = currentNode.next;
    }
  }
}

其他方法非常相似。您只需要记住linkedlist操作通常与列表遍历相关联。希望这有帮助。

相关问题