LeetCode 94 Binary Tree Inorder Traversal (이 진 트 리 의 순서)
1840 단어 데이터 구조
For example: Given binary tree
[1,null,2,3]
, 1
\
2
/
3
return
[1,3,2]
. Note: Recursive solution is trivial, could you do it iteratively?
제목: 두 갈래 트 리 에 순서대로 옮 겨 다 니 는 결 과 를 출력 합 니 다.
문제 풀이 방향: 이 진 트 리 에서 순서대로 옮 겨 다 니 는 순 서 는 먼저 왼쪽 트 리 를 옮 겨 다 니 고 그 다음 에 뿌리 노드 를 옮 겨 다 니 며 마지막 으로 오른쪽 트 리 를 옮 겨 다 니 는 것 입 니 다.제목 은 재 귀적 으로 옮 겨 다 니 는 표기 법 이 너무 흔 하 다 고 하 니, 우 리 는 재 귀적 이지 않 은 것 을 쓴다.중간 순서 로 옮 겨 다 니 는 순서에 따라 우 리 는 이렇게 처리 할 수 있다.
임의의 노드 N 에 대해,
1. N 의 왼쪽 아이 가 비어 있 지 않 으 면 N 을 스 택 에 넣 고 N 의 왼쪽 아 이 를 N 으로 설정 한 다음 N 을 동일 하 게 처리 합 니 다.
2. N 의 왼쪽 아이 가 비어 있 으 면 스 택 꼭대기 요 소 를 꺼 내 스 택 작업 을 하고 스 택 꼭대기 노드 를 방문 한 다음 에 스 택 꼭대기 요소 의 오른쪽 아 이 를 N 으로 설정 합 니 다.
3. N 이 비어 있 고 스 택 이 비어 있 을 때 까지 반복 합 니 다.
참고 자료: 이 진 트 리 의 비 재 귀적 옮 겨 다 니 기
코드 는 다음 과 같 습 니 다:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector inorderTraversal(TreeNode* root) {
if(root == nullptr) return vector();
stack stk;
vector ans;
TreeNode* now = root;
while(now || stk.size()){
while(now){
stk.push(now);
now = now->left;
}
if(stk.size()){
now = stk.top();
ans.push_back(now->val);
stk.pop();
now = now->right;
}
}
return ans;
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.