我得到了以下树:
然后我们被告知使用最后一个孩子/前一个兄弟姐妹方法来改变这三者的实现。这导致了以下结果:
我现在正在用Java实现来执行这棵树上的不同功能。我们有一个树接口和一个TreeNode接口。他们都有许多我们需要填写的功能。
节点是这样创建的:
MyTreeNode a = new MyTreeNode ("a");
树是这样创建的(使用根):
MyTree tree = new MyTree (a);
最后,节点被赋予兄弟姐妹子级,如下所示:
e.setChild(j);
e.setSibling(d);
我已经为setChild、setSibling、getNextSibling和getFirstChild编写了方法。例如,这是getChildren的代码:
public List getChildren ()
{
List <MyTreeNode> children = new ArrayList <MyTreeNode> ();
MyTreeNode x = this.child;
children.add(x);
while (x != null && x.sibling != null) {
x = x.sibling;
children.add(x);
}
return children;
}
我现在完全不知道如何编写节点子树的高度、深度、大小、getPreorder、getPostorder和树大小的方法。
由于树现在处于这种不同的表示形式中,我不确定如何编写递归方法来检查节点的高度或深度。通常,据我所知,您会递归地检查左/右子树...但是现在没有任何(就我所知)。我能想到的唯一方法是使用许多if语句和while循环遍历每个节点...但这不是最好的方法。
我如何用这种树的实现递归地编写这些方法?
此外,我不知道如何获得关于整个树的详细信息,因为节点没有以任何方式存储在一起。它们是以我上面展示的方式实现的,所以我不知道如何集体收集所有节点的数据。
如何在整个树的所有节点上创建树大小、isEmpty或MakeMpty等方法?
抱歉,解释太冗长了。
假设您的树有一个这样的节点结构:
public class Node{
String nodeName;
Node left;
Node right;
public Node(String nodeName, Node left, Node right){
this.nodeName = nodeName;
this.left = left;
this.right= right;
}
}
以下是我对如何构建你的新树的想法:当你向你的树添加新节点时,你将仍然保持你的树结构。根据您将节点添加到树中的方式,您仍将继续添加到父节点的左侧或右侧。
可视化新树的一种可能方法是这样的:
A
/
E
/ \
D J
/ \ / \
C H I K
/
B
/
G
/
F
注意:我在这里假设,如果是一个孩子,它会被添加到你父母的左边。但这最好取决于你的要求
如果您可以以这种方式可视化此树,则用于获取高度、前序、后序遍历的递归函数仍然保持不变。
还有几个提示:
>
添加同级节点类似于在节点父节点的左侧或右侧添加节点,即如果当前节点位于其父节点的右侧,则将在右侧添加新节点。
添加子项将保持不变。根据您的逻辑,您可以将新节点添加为当前节点的左子节点或右子节点。
我正在尝试用java实现二叉树,下面是我的代码: 我无法在我的树中插入新节点,root的值不会改变 当我调用newnode函数时,我得到了我的Root Node的正确值,但在main函数中,它给了我空点异常 为什么root的值没有更新
本文向大家介绍Trie树(字典树)的介绍及Java实现,包括了Trie树(字典树)的介绍及Java实现的使用技巧和注意事项,需要的朋友参考一下 简介 Trie树,又称为前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。 它的主
本文向大家介绍Java中二叉树数据结构的实现示例,包括了Java中二叉树数据结构的实现示例的使用技巧和注意事项,需要的朋友参考一下 来看一个具体的习题实践: 题目 根据二叉树前序遍历序列例如:7,-7,8,#,#,-3,6,#,9,#,#,#,-5,#,#,构建二叉树,并且用前序、中序、后序进行遍历 代码 二叉树的深度 下面是是实现二叉树的递归算法的实现,其思想就是,若为空,则其深度为0,否则,其
问题内容: 我正在编写一个使用二进制搜索树存储数据的程序。在以前的程序中(无关),我能够使用Java SE6随附的实现来实现链表。二进制搜索树是否有类似的东西,还是我需要“从头开始”? 问题答案: 您可以使用。被实现为一棵红黑树,这是一个自平衡二进制搜索树。
我有一个表示二叉树节点的树节点的树节点。 } 我有一个BinarySearchTree类 问题是当我创建一个子节点并设置父子链接时。父节点的值(我传递的节点对象)也会更新并引用子对象。 那不是我的本意。 我想创建一个treenode对象链,可以通过“根”treenode对象访问它。 但这并没有发生,我不明白我做错了什么。 我知道问题出在这个代码片段的逻辑上(不仅仅是为了在左边插入,也是为了在左边和