144. Binary Tree Preorder Traversal-반복, 비반복
1692 단어 먼저 순서대로 두루 다니다.leetcode
For example:Given binary tree
{1,#,2,3}
, 1
\
2
/
3
return
[1,2,3]
. 해법 1:
반복 방법:
루트가 비어 있지 않으면,
먼저 루트에 접근하고 왼쪽 트리에 귀속되며 오른쪽 트리에 귀속됩니다.
void preorderCore(TreeNode *root,vector &res){
if(root){
res.push_back(root->val);
preorderCore(root->left,res);
preorderCore(root->right,res);
}
}
vector preorderTraversal(TreeNode* root) {
vector res;
preorderCore(root,res);
return res;
}
해법 2:
창고 사용, 교체 방법.
void preorderCore(TreeNode *root,vector &res){
if(!root)
return;
stack st;
while(!st.empty()||root){
while(root){
st.push(root);
res.push_back(root->val);
root=root->left;
}
root=st.top();
st.pop();
root=root->right;
}
}
다른 쓰기 방법은 다음과 같습니다.
void preorderCore(TreeNode *root,vector &res){
if(!root)
return;
stack st;
st.push(root);
while(!st.empty()){
root=st.top();
st.pop();
res.push_back(root->val);
if(root->right)
st.push(root->right);
if(root->left)
st.push(root->left);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
알고리즘 연습 문제 43: 귀속과 비귀속이 두 갈래 나무의 전 순서를 반복한다.. 귀속과 비귀속 두 가지 방법으로 두 갈래 나무의 전서를 두루 훑어본다. 역귀환의 교체는 순환을 빌리는 것이 틀림없다고 생각하기 쉽다. 그러나 우리가 이곳에서 두 갈래 나무를 옮길 때 사실은 컴파일러 내부의 창고를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.