트리를 탐색하여 내 배열에 대해 null 값을 얻으려고합니다. Node 클래스의 클래스 정의에서 루트가없는 오른쪽 및 왼쪽 자식에만 액세스 할 수있는 트리를 탐색해야합니다.오른쪽 및 왼쪽 자식 액세스가있는 노드 트리 순회
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;
}
그것은이 [1,2,4,3,5]을 반환해야
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
}
}
의 입력을 받아, 나는 [] 얻고있다. 나는 또한 루핑을 시도했다.
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;
}
이것은 또한 작동하지 않는다. 이것 역시 나에게 [] 배열을 돌려 줄 것이다. 트리 탐색은 트리 높이 (레벨)로 표시된 트리 수준에서 왼쪽에서 오른쪽으로 트리를 인쇄해야합니다. 이견있는 사람?
@azurefrog는 당신이 찾고있는 것을 포함하도록 질문을 편집했습니다. –