【发布时间】:2015-05-10 01:04:54
【问题描述】:
我需要创建一个未排序的二叉树(一个要求是它是未排序的),其中包含 String 作为其值。我的课程大纲如下所示:
public class Node {
private String desc;
private Node leftNode = null;
private Node rightNode = null;
public Node(String desc) {
this.desc = desc;
}
public String getDesc() {
return desc;
}
public Node getLeftNode() {
return leftNode;
}
public Node getRightNode() {
return rightNode;
}
}
最终,我希望能够将任何与String 描述匹配的节点替换为具有新描述的新节点(包括与旧描述重复的节点)。
所以我的问题是,在创建未排序的二叉树时,处理 Nodes 插入的最佳方法是什么?
我想到了两种方法。第一种是只有两种方法,setLeftNode(Node root, String desc) 和setRightNode(Node root, String desc),有人可以使用他们选择的Node 作为根调用。如果已经有一个左/右Node,那么它会向下前进,直到它碰到一个没有左Node 的节点。但这可能会通过产生超大高度来引入问题。
我想到的第二种方法是有一个专用的根Node,在这种情况下创建第一个Node,然后按顺序构建新的Nodes。
那么创建未排序二叉树的最佳方法是什么?
【问题讨论】:
-
从项目列表创建未排序二叉树的最有效方法是获取项目列表并将元素 0 视为根,元素 1 和 2 视为元素 0 的左右节点等。这为您提供了零工作的完美平衡树。但首先这棵树有什么意义呢?
-
@Alex 据我了解,常规二叉树始终未排序。
-
@Alex 如果您正在寻找
Binary Search Tree,那么显然它有自己明确定义的订购方案。对于二叉树,没有最好的方法,这完全取决于您的要求。
标签: java tree binary-tree