试图遍历一棵树并为我的数组获取空值。我需要遍历只允许访问节点类的类定义中没有根的右和左子级的树。
class Tree<T> {
Tree(T x) {
value = x;
}
T value;
Tree<T> left;
Tree<T> right;
}
public int[] traverseTree(Tree<Integer> t) {
Stack<Tree<Integer>> stack = new Stack<Tree<Integer>>();
Tree<Integer> node = root;
while (node != null) {
stack.push(node);
node = node.left;
}
int[] result = new int[stack.size()];
int i = 0;
while (stack.size() > 0) {
node = stack.pop();
if(node != null) {
result[i] = node.value;
i++;
}
if (node.right != null) {
node = node.right;
while (node != null) {
stack.push(node);
node = node.left;
}
}
}
return result;
}
它需要输入
t = {
"value": 1,
"left": {
"value": 2,
"left": null,
"right": {
"value": 3,
"left": null,
"right": null
}
},
"right": {
"value": 4,
"left": {
"value": 5,
"left": null,
"right": null
},
"right": null
}
}
这应该返回[1,2,4,3,5],我得到了[]。我也尝试过像这样循环
if(root != null) {
queue.add(root);
}
while(root.left != null) {
while(root.right != null) {
queue.add(root);
root = root.right;
}
queue.add(root);
root = root.left;
}
这也不管用。这也会给我一个[]数组。遍历应该从左到右在树高(即树高)指示的树级别上打印树。有什么想法吗?
信息技术应该返回t=[1,2,4,3,5],我得到[]。
好吧,让我们看看您用来填充队列的for循环:
for (Tree<Integer> node = root; node != null; node = queue.poll()) {
//stuff
}
这里所做的是循环,直到
queue.poll()
返回null
,如果我们查看ArrayDeque
的javadoc,我们会看到投票()
检索并删除此deque表示的队列的头部(换句话说,此deque的第一个元素),或者如果此deque为空,则返回null。
所以,基本上你是在循环,直到你的
队列
是空的,然后根据它的大小创建一个数组来返回。因为它的大小总是零,所以你总是返回一个零长度的数组。
看起来你要做一个预序遍历,所以你需要做的是用一个合适的算法重写你的方法。
如果你致力于非递归遍历,这里有一个算法可以实现。
我遇到了这个问题:下面的方法必须返回左侧子节点中的值,或者-1(如果它不存在)。 现在,参数是一个int值,它指示父节点的值。另一个问题是...树不是有序的,只有正整数值。所以,我可以在根中有一个0的值,在左边的子项中有3的值,在右边的子项中有1的值,以此类推...我想不出该怎么解决这件事。我不能将像LinkedList或Stack这样的ADT用于任何目的。二叉树类有一个字段根,类型为node:
我有一个左右兄弟姐妹,如下所示: 我想从根节点遍历到最后一个节点,遍历函数如下: 正如我所理解的,如果节点有一个子节点,那么指针指向它的子节点,否则指向同级节点(下一个)。在这种情况下,当指针指向元素6时,它将转到根- 下面是重新创建树的代码:
我希望生成一个可视化xml文件结构的图形。 我创建了一个节点列表来表示xml文件 每个节点包含3个字符串:xml标记、属性和内容。 xml 文件如下所示: 我希望通过枚举节点列表,使用Plotly和igraph库生成一个树形图。 我在这里使用这个网站作为参考。 我的XML文件包含子元素数量可变的元素。然而,给出的例子只向我展示了如何开发一个具有固定数量的子节点的树(这个例子展示了每个节点2个子节点
如果我没弄错的话,树通常是一个列表,其中的元素按特定顺序排列。孩子们不在他们自己的子列表中,他们都在同一个列表中。 所以,我试图创建一个Tree类,其中包含TreeNodes(类)使用Tree类中的List。 我如何跟踪父母/孩子/叶子?如果父母“父母1”,有两个孩子“孩子A”和“孩子B”,我如何将他们联系在一起?
我有一个二叉树,每个节点上都有一个单词。 在另一个类中,我需要逐个访问节点,然后操作单词。从另一个类逐个访问节点的最佳方法是什么? 在我的币树类中,每个节点都有一个左子、右子和一个值(String)。我有三个方法,printinorder-,插入和find节点。查找节点接收一个字符串,并查看该字符串是否存储在任何节点值中。 我有另一个类,需要一个接一个地获取节点,但是我不确定从另一个类中获取的最佳
在具有父子指针的通用树结构中,是否可以在不遍历完整树的情况下遍历叶节点?例如,从最左边的叶节点开始。想法是在深树上进行优化。