【发布时间】:2018-03-20 02:22:57
【问题描述】:
我正在尝试基于链表创建树结构。由于链表只能直接指向下一个节点(对于单链表),我想修改一下链表的概念。是否可以从多个节点指向一个节点?
这是一张正在绘制的图片
【问题讨论】:
-
java 没有指针
-
嗯我想我应该使用不同的方法而不是指向一个点
-
你说的是发明一棵树吗?
我正在尝试基于链表创建树结构。由于链表只能直接指向下一个节点(对于单链表),我想修改一下链表的概念。是否可以从多个节点指向一个节点?
这是一张正在绘制的图片
【问题讨论】:
我认为以下方法可行:
class Node {
Node sibling;
Node child;
Object item;
}
sibling 将指向并行级别的下一个节点,child 指向较低级别的节点。
【讨论】:
请看下面我的实现:
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
【讨论】: