비귀속 실현 전순, 중순, 후순 두 갈래 트리
// test2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
#include<stack>
using namespace std;
struct ListNode{
int val;
ListNode * left;
ListNode * right;
ListNode(int x):val(x),left(NULL),right(NULL){
}
};
void PreTraverseTree(ListNode *root)
{
if(root == NULL)
return;
stack<ListNode *> stack;
ListNode *p = root;
stack.push(p);
while(!stack.empty())
{
while(p)
{
stack.push(p);
cout<<p->val<<" ";
p = p->left;
}
p = stack.top();
stack.pop();
p = p->right;
}
}
void InTraverseTree(ListNode * root)
{
if(root == NULL)
return;
stack<ListNode *> stack;
ListNode *p = root;
while(p || !stack.empty())
{
while(p)
{
stack.push(p);
p = p->left;
}
p = stack.top();
stack.pop();
cout<<p->val<<" ";
p = p->right;
}
}
void PostTraverseTree(ListNode *root)
{
if(root == NULL)
return ;
stack<ListNode*> stack;
int flag[20];
ListNode *p = root;
while(p)
{
stack.push(p);
flag[stack.size()] = 0;
p = p->left;
}
while(!stack.empty())
{
p = stack.top();
while(p->right && flag[stack.size()] == 0)
{
p = p->right;
flag[stack.size()] = 1;
while(p)
{
stack.push(p);
flag[stack.size()] = 0;
p = p->left;
}
p = stack.top();
}
p = stack.top();
cout<<p->val<<" ";
stack.pop();
}
}
int main(int argc, char* argv[])
{
ListNode * root = new ListNode(10);
root->left = new ListNode (5);
root->right = new ListNode(11);
root->left->right = new ListNode(6);
cout<<"PreOrderTraverseTree:";
PreTraverseTree(root);
cout<<endl;
cout<<"InOrerTraverseTree:";
InTraverseTree(root);
cout<<endl;
cout<<"PostOrderTraverseTree:";
PostTraverseTree(root);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.