我有一個二叉樹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
}
而且我有重複的代碼,我不怎麼擺脫。 我使用在此期間穿過,並從此隊列中彈出元素,因此元素將不會按此順序穿過並且穿越無法使用。任何人都可以提供任何提示嗎?
初始化第一個方法中的變量「遍歷」在哪裏? –