我有一个二叉树Similiar功能遍历一个二叉树
public class Node
{
int value;
Node left;
Node right;
public Node getLeft() {
return left;
}
public Node getRight() {
return right;
}
public String getValue() {
return value;
}
}
而且在主要我有一个函数来遍历它。 对于树
5
/\
3 7
/\
1 2
首先一个创建具有广度优先遍历(5,3,7,1,2)的节点的队列中。 第二个返回例如一个节点的值。 7代表2号或2代表4号。
private void queueOfTreaversed() {
LinkedList<Node> queue = new LinkedList<Node>();
if (root != null)
queue.add(root);
while (!queue.isEmpty()) {
Node temp = queue.removeFirst();
if (temp.getLeft() != null && temp.getRight() != null) {
traversed.add(temp); //there is a difference
queue.add(temp.getLeft());
queue.add(temp.getRight());
}
}
}
public int getValue(int n) {
LinkedList<Node> queue = new LinkedList<Node>();
if (root != null)
queue.add(root);
while (!queue.isEmpty() && n>0) {
Node temp = queue.removeFirst();
if (temp.getLeft() != null && temp.getRight() != null) {
queue.add(temp.getLeft());
queue.add(temp.getRight());
}
}
return queue.peekFirst().getValue(); //there is a difference
}
而且我有重复的代码,我不怎么摆脱。 我使用在此期间穿过,并从此队列中弹出元素,因此元素将不会按此顺序穿过并且穿越无法使用。任何人都可以提供任何提示吗?
初始化第一个方法中的变量“遍历”在哪里? –