2017-10-08 39 views
2

我试图根据链表制作一个树结构。由于链表只能直接指向下一个节点(对于单链表),我想修改链表的概念。是否可以指向多个节点中的一个节点?是否有可能将多个节点链接到单个节点?

这里是一个图像中绘制

enter image description here

+0

Java没有指针 – krpra

+0

嗯我想我应该使用一种不同的方法,而不是指向一个点 – sbot

回答

0

我认为下面将工作:

class Node { 
    Node sibling; 
    Node child; 
    Object item; 
} 

兄弟将指向下一个节点在平行的水平,孩子点上下级节点。

+0

是的,我想过这个,但是如何将兄弟节点指向编码中的父节点呢?因为当我有多个后代。我尝试使用列表>,并使内部节点成为列表>递归直到到达根或叶子。顺便说一句,我正在使用后订单输入法这一 – sbot

0

见下面我的实现:

package treeTest; 

public class Node { 
private Node left; 
private Node right; 
private String data; 
public Node(String data) { 
    this.data = data; 
    left = null; 
    right = null; 
} 

public Node getLeft() { 
    return left; 
} 

public void setLeft(Node left) { 
    this.left = left; 
} 

public Node getRight() { 
    return right; 
} 

public void setRight(Node right) { 
    this.right = right; 
} 

public String getData() { 
    return data; 
} 

public void setData(String data) { 
    this.data = data; 
} 

}

package treeTest; 

public class Tree { 
private Node root; 

public Tree() { 
    root = null; 
} 

public void insert(String data) { 
    root = insert(root, data); 
} 

private Node insert(Node node, String data) { 
    if(node == null) { 
     // Then create tree 
     node = new Node(data); 
    } else { 
     if(data.compareTo(node.getData()) <= 0) { 
      node.setLeft(insert(node.getLeft(), data)); 
     } else { 
      node.setRight(insert(node.getRight(), data)); 
     } 
    } 
    return node; 
} 

}

package treeTest; 

import java.util.Scanner; 

public class TestTree { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Tree tree = new Tree(); 

    tree.insert("Hurricane"); 
    // Second level 
    tree.insert("Cat1"); 
    tree.insert("Cat2"); 
    tree.insert("Cat3"); 
} 

} 

有关详细信息结帐这个Java Program to Implement a Binary Search Tree using Linked Lists

+0

好吧,我有这个概念,但二叉树节点如何为有三个孩子的父母工作? – sbot

+0

按照定义,二叉树是一个树数据结构,最多有两个子节点(或节点)。 [定义](https://en.wikipedia.org/wiki/Binary_tree)。但是,如果你想拥有一个有3个孩子的树,你可以添加另一个节点,也许将它命名为中间 – MLY

+0

但是我构建的是拥有无限数量的孩子。例如,用户可能希望在一个家长中有10个孩子。因此,定义儿童节点的数量到目前为止并不能解决我的问题。无论如何,Thx回复评论。 – sbot

相关问题