如何在给定节点对(u,v)的java中创建一个简单的无序树(而不是BST)?

时间:2014-01-16 12:05:29

标签: java tree nodes

问题是我不明白如何创建树。我在树上经历了很多代码示例,但我甚至不知道如何使用/处理节点,因此我不明白 节点类 的工作原理(出现在所有程序示例中)。当我尝试使用诸如appendChild之类的方法(如java文档中所述)时,我收到错误,并且我被要求在 节点类 中创建一个这样的appendChild方法在主程序内。无法理解为什么会这样。

我给出了整数对((u,v)意味着u& v之间存在边缘)我还需要知道是否需要使用u和v进行任何元素到节点的转换(输入整数)作为节点。

因为我的基础知识很弱,所以请耐心等待。关于整个事物如何工作/功能的一点解释将是非常有帮助的。 谢谢。

编辑1:我浏览了以下链接:(几乎没有找到任何关于无序树)http://www.cs.cmu.edu/~adamchik/15-121/lectures/Trees/code/BST.java http://www.newthinktank.com/2013/03/binary-tree-in-java/的内容。试图修改这些代码以满足我自己的目的但失败了。 我只有一个模糊的想法,这还不足以实现。我正在尝试制作一个简单的无序树,为此我给了你一对像: (4,5)(5,7)(5,6)。我只需要加入(4 < - 5),(5 < - 7)和(5 < - 6)。那么如何编写一个只将一个节点连接到prev节点的节点类呢?此外,要做 only 这个,我是否需要打扰自己左撇子,右撇子?如果没有,我将如何能够遍历树并进行类似的操作,如高度直径计算等?

感谢您的耐心等待。

2 个答案:

答案 0 :(得分:0)

嗯,你是否想要对一般的树创建,你已经找到的一些树实现,或者你已经有一个基本的代码,你不能得到解释,并不完全清楚。你可能想澄清:)。 树木创建一般: 你会发现大多数解释和实现可能是“过于”优雅:)。因此,首先尝试想象一个简单的链表。在该列表中,您有节点(列表的元素)。节点包含一些有价值的数据和对其他节点对象的引用。非常简单的树的不同之处仅在于节点对其他节点具有多个引用。例如,它有一组引用,它的“子”。 这是一个非常粗略的代码,仅作为addChild()或appendChild的示例:

public class Node {

private String valueableData;
private Set<Node> children;

public Node(){
    this.children=new HashSet<Node>();
}

public Node (String valueableData){
    this.valueableData=valueableData;
    this.children=new HashSet<Node>();
}

public void addChild(Node node){
    children.add(node);
}

}

现在这个实现非常糟糕(我甚至删除了setter / getters),在某些情况下保持根节点引用也是明智的,依此类推。但是你可能会得到基本的想法。

你可能想创建一个循环或递归来遍历(u,v)整数对。首先创建根节点,然后递归地添加所有其他节点,或者先创建每个节点,然后根据规则创建setChild()。

答案 1 :(得分:-1)

我发现在youtube上创建二叉树的这个链接试试这个

https://www.youtube.com/watch?v=ddGmmbx2iG8