Given the root of a binary tree, return the inorder traversal of its nodes' values.
Example 1:
- Input: root = [1,null,2,3]
- Output: [1,3,2]
Example 2:
- Input: root = []
- Output: []
Example 3:
- Input: root = [1]
- Output: [1]
The number of nodes in the tree is in the range [0, 100].
-100 <= Node.val <= 100
이진 트리는 Data Structure의 트리 구조 중 자식 노드가 두개인 트리를 의미한다. 한편, 이진 트리는 자료의 삽입, 삭제 방법에 따라 정 이진 트리(Full binary tree), 완전 이진 트리(Complete binary tree), 포화 이진 트리(Perfect binary tree)로 나뉜다.
[1,2,3,4,5,6,7]과 같은 array로 나타내기는 한다.
정 이진 트리: 각 노드가 0 개 혹은 2 개의 자식 노드를 갖는 경우
완전 이진 트리: 마지막 레벨을 제외한 모든 노드가 가득 차 있어야 하고, 마지막 레벨의 노드는 전부 차 있지 않아도 되지만 왼쪽이 채워져 있는 경우
포화 이진 트리: 정 이진 트리이면서 완전 이진 트리인 경우. 모든 리프 노드의 레벨이 동일하고, 모든 레벨이 가득 채워져 있어야 됨.
중위, 후위, 전위란 root의 위치가 어디에 있느냐를 말한다. 중위는 root는 중간, 나머지는 항상 왼쪽 ->오른 쪽 순으로 순회된다.
function solution(root) {
let result = [];
dfs(root);
function dfs(root) {
if (root != null) {
dfs(root.left);
result.push(root.val);
dfs(root.right);
}
}
return result;
}
dfs 안의 순서를 변경함을 통해서, 중위, 전위, 후위 등을 정할 수 있으며, 중위 순회방식으로 구하기 때문에, 왼쪽-> root->오른쪽 순으로 순회한다.