【发布时间】:2020-11-18 08:08:55
【问题描述】:
所以我目前正在编写一个程序,我需要获取一棵充满节点的树,并基本上获取所有节点(每个节点都有一个我需要获取的名称,然后将其放入一个数组中)。我试图通过递归来做到这一点,但我遇到了一些棘手的情况。基本上,我的递归调用完美地完成了树的左侧。但是,当它转到右侧(即树顶部的右侧,即根)时,它将索引设置回 2(而不是继续在左侧停止的位置),我是我对如何解决这个问题有点困惑。这是我的方法和递归方法的代码:
public Object[] getAllIdentifiers() {
// TODO Auto-generated method stub
current = root;
if(root == null)
return null;
Object[] identifiers = new Object[numberOfIdentifiers];
getAllIdentifiers(current, identifiers, 0);
return identifiers;
}
private void getAllIdentifiers(Node node, Object[] array, int index) {
if(node != null) {
array[index] = node.id;
System.out.println("INDEX: " + index);
}
if(node.leftChild != null) {
System.out.println("LEFT");
index = index + 1;
getAllIdentifiers(node.leftChild, array, index);
}
if(node.rightChild != null) {
System.out.println("RIGHT");
index = index + 1;
getAllIdentifiers(node.rightChild, array, index);
}
}
【问题讨论】:
标签: java recursion binary-search-tree