이 진 트 리 의 자바 옮 겨 다 니 기 구현
1) S.
2) root
3) S, current = current-> left, current NULL
4) current NULL,
a) 。
b) , current = popped_item-> right
c) 3。
5) current NULL, , 。
아래 나 무 를 옮 겨 다 니 는 것 을 고려 해 보 자.예 를 들 면.
1
/ \
2 3
/ \
4 5
1 :S = NULL
2 :current - > 1
3 , current = current-> left, current NULL
current - > 1
Push 1: S - > 1
current - > 2
push 2:Stack S - > 2,1
current - > 4
push 4:Stack S - > 4,2,1
current = NULL
4 4 S
a)Pop 4:Stack S - > 2,1
b) “4”
c)current = NULL / * 4 * / 3
current NULL, 3 。
4 。
a)Pop 2:Stack S - > 1
b) “2”
c)current - > 5 / * 2 * / 3
3 Push 5 NULL
S - > 5,1
current = NULL
4 S
a)Pop 5:Stack S - > 1
b) “5”
c)current = NULL / * 5 * / 3
current NULL, 3
4 。
a)Pop 1: S - > NULL
b) “1”
c)current - > 3 / * 5 * /
3 Push 3 , NULL
S - > 3
current = NULL
4 S
a)Pop 3: S - > NULL
b) “3”
c)current = NULL / * 3 * /
, S NULL。
코드
// non-recursive java program for inorder traversal
/* importing the necessary class */
import java.util.Stack;
/* Class containing left and right child of current
node and key value*/
class Node {
int data;
Node left, right;
public Node(int item) {
data = item;
left = right = null;
}
}
/* Class to print the inorder traversal */
class BinaryTree {
Node root;
void inorder() {
if (root == null) {
return;
}
//keep the nodes in the path that are waiting to be visited
Stack stack = new Stack();
Node node = root;
//first node to be visited will be the left one
while (node != null) {
stack.push(node);
node = node.left;
}
// traverse the tree
while (stack.size() > 0) {
// visit the top node
node = stack.pop();
System.out.print(node.data + " ");
if (node.right != null) {
node = node.right;
// the next node to be visited is the leftmost
while (node != null) {
stack.push(node);
node = node.left;
}
}
}
}
public static void main(String args[]) {
/* creating a binary tree and entering
the nodes */
BinaryTree tree = new BinaryTree();
tree.root = new Node(1);
tree.root.left = new Node(2);
tree.root.right = new Node(3);
tree.root.left.left = new Node(4);
tree.root.left.right = new Node(5);
tree.inorder();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.