Coding Test/LeetCode
[LeetCode] 94. Binary Tree Inorder Traversal c++
owls
2022. 12. 19. 21:36
728x90
- 문제
Given the root of a binary tree, return the inorder traversal of its nodes' values.
Input: root = [1,null,2,3]
Output: [1,3,2]
트리 순회 알고리즘 중 중위 순회(Inorder Traversal) 를 사용하여 방문한 순서대로 노드 값을 출력하는 문제이다.
Inorder Traversal(중위 순회) 란? (<- 클릭)
중위 순회는 부모의 왼쪽 자식 노드 → 부모 노드 → 부모의 오른쪽 자식 노드 순으로 방문하는 트리 순회 알고리즘입니다.


위의 트리를 중위 순회를 하면 {1, 2, 3, 4, 5, 6, 7, 8} 순으로 방문하게 됩니다.
- 문제 해결
void visitInorder(TreeNode* root, vector<int>& v) {
if (!root) {
return;
}
else {
visitInorder(root->left, v);
v.push_back(root->val);
visitInorder(root->right, v);
}
}
vector<int> inorderTraversal(TreeNode* root) {
vector<int> v;
visitInorder(root, v);
return v;
}
다른 방법
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root){
if(root==NULL)
return {};
vector<int> vec;
stack<TreeNode*> s;
while(true){
if(root!=NULL){
s.push(root);
root=root->left;
}
else{
if(s.empty())
break;
root=s.top();
s.pop();
vec.push_back(root->val);
root=root->right;
}
}
return vec;
}
};
728x90