두 갈래 나무가 번갈아 다니다
2216 단어 두 갈래 나무
사상: 먼저 하나의 Stack을 만들어서 노드를 저장합니다. 이때 Stack은 비어 있습니다. 먼저 루트 결점을 Stack에 넣고 앞의 순서를 반복하는 것은 뿌리와 왼쪽, 오른쪽을 결합하는 선진적인 특징입니다. 다시 창고에 들어가는 것은 오른쪽 노드입니다. 따라서 결점의 오른쪽 나무가 비어 있지 않으면 창고에 들어가고 왼쪽 나무가 창고에 들어가는 것을 판단합니다. 코드 예시:
public List preorderTraversal(TreeNode root) {
Stack stack = new Stack<>();
List list = new LinkedList<>();
if(root == null){
return list;
}
stack.push(root);
while(!stack.isEmpty()){
TreeNode node = stack.pop();
list.add(node.val);
if(node.right != null){
stack.push(node.right);
}
if(node.left != null){
stack.push(node.left);
}
}
return list;
}
2. 중서 두루 훑어보다
사상: Stack을 만들고 왼쪽 중 오른쪽을 눌러 체인 테이블에 추가합니다. 가능한 한 이 노드의 왼쪽 트리를 창고에 넣으십시오. 이때 창고 꼭대기의 요소는 가장 왼쪽의 요소입니다. 오른쪽 노드가 있으면 중순으로 훑어보십시오.
public List inorderTraversal(TreeNode root) {
List list = new LinkedList<>();
Stack stack = new Stack<>();
TreeNode cur = root;
while(!stack.isEmpty() || cur != null){
while(cur != null){
stack.push(cur);
cur = cur.left;
}
TreeNode node = stack.pop();
list.add(node.val);
if(node.right != null){
cur = node.right;
}
}
return list;
}
세 번째, 뒤 순서가 두루 다니다
public List postorderTraversal(TreeNode root) {
LinkedList stack = new LinkedList<>();
LinkedList output = new LinkedList<>();
if (root == null) {
return output;
}
stack.add(root);
while (!stack.isEmpty()) {
TreeNode node = stack.pollLast();
output.addFirst(node.val);
if (node.left != null) {
stack.add(node.left);
}
if (node.right != null) {
stack.add(node.right);
}
}
return output;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 데이터 구조 2차원 트리의 실현 코드일.두 갈래 트리 인터페이스 2 노드 클래스 3. 두 갈래 나무 구현 이 글을 통해 여러분께 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.