java version "1.8.0_92"
저는 나무를 연구하고 재귀를 사용하여 나무를 탐색하는 방법을 배우고 있습니다. 그러나 나는 그것에 대해 혼란 스럽다.재귀가 나무를 가로 지르는 방법은 무엇입니까
public void preOrder(BinaryTree root) {
if(root != null) {
System.out.println(root);
preOrder(root.leftChild); <-- this gets called and will start from the top of the function
preOrder(root.rightChild); <-- how can this get called if the top one will always calls itself?
}
}
나는 두 번째가 실행되지 않습니다 때문에 호출이 위에서 항상 자신을 호출로 두 번째 선주문이 호출되지 얻을 않을 것이라고 생각합니다.
'root! = null' 이후 두 번째 preOrder가 항상 호출됩니다. – Paulo
BTW,이 질문은 적어도 두 번 전에 물어 보았습니다. 나는 seraching의 10 분 후에 이전 것들을 찾을 수 없습니다. – Prune
@Paulo 그래서 첫 번째 preOrder (root.left) == null 일 때. 두 번째 preOrder (root.right)가 호출됩니까? 두 번째 root.right == null 일 때. 첫 번째 preOrder (root.left)가 다시 호출됩니다. 둘 모두가 == null 일 때까지. 그 맞습니까? – ant2009