두 가지 방식으로 두 갈래 나무를 옮겨다니기 - 귀속 방식과 비귀속 방식
3045 단어 두 갈래 나무
#include <iostream>
#include <stack>
using namespace std;
struct Node
{
int num;
Node* pLeft;
Node* pRight;
};
void insert(Node* &p,int num)
{
Node* pTmp=new Node();
pTmp->num=num;
pTmp->pLeft=pTmp->pRight=NULL;
if(p==NULL)
{
p=pTmp;
return;
}
if(num<p->num)
insert(p->pLeft,num);
else if(num>p->num)
insert(p->pRight,num);
else
return;
}
void PreOrder(Node* p)
{
if(p==NULL)
return;
else
{
cout<<p->num<<" ";
PreOrder(p->pLeft);
PreOrder(p->pRight);
}
}
void InOrder(Node* p)
{
if (p==NULL)
return;
else
{
InOrder(p->pLeft);
cout<<p->num<<" ";
InOrder(p->pRight);
}
}
void PostOrder(Node* p)
{
if (p==NULL)
return;
else
{
PostOrder(p->pLeft);
PostOrder(p->pRight);
cout<<p->num<<" ";
}
}
void PreOrderByLoop(Node* p)
{
stack<Node*> MyStack;
if(p==NULL)
return;
while(p!=NULL||!MyStack.empty()) //p
{
while(p!=NULL)
{
MyStack.push(p);
cout<<p->num<<" ";
p=p->pLeft;
}
if(!MyStack.empty()) //
{
p=MyStack.top();
MyStack.pop();
p=p->pRight; //
}
}
cout<<endl;
}
void InOrderByLoop(Node* p)
{
stack<Node*> Mystack;
while(p!=NULL||!Mystack.empty())
{
while(p!=NULL)
{
Mystack.push(p);
p=p->pLeft;
}
if(!Mystack.empty())
{
p=Mystack.top();
Mystack.pop();
cout<<p->num<<" ";
p=p->pRight;
}
}
cout<<endl;
}
void PostOrderByLoop(Node* p)
{
stack<Node*> Mystack;
Node* pre=NULL; //
while(p!=NULL||!Mystack.empty())
{
while(p!=NULL)
{
Mystack.push(p);
p=p->pLeft;
}
p=Mystack.top();
if(p->pRight==NULL||p->pRight==pre) //
{
cout<<p->num<<" ";
Mystack.pop();
pre=p;
p=NULL; //
}
else
p=p->pRight;
}
cout<<endl;
}
void main()
{
Node* p=NULL;
insert(p,10);
insert(p,6);
insert(p,14);
insert(p,4);
insert(p,8);
insert(p,12);
insert(p,16);
insert(p,1);
insert(p,5);
insert(p,15);
insert(p,17);
insert(p,7);
insert(p,9);
cout<<"Preorder:"<<endl;
PreOrder(p);
cout<<endl<<"preorderbyLoop:"<<endl;
PreOrderByLoop(p);
cout<<endl<<"Inorder:"<<endl;
InOrder(p);
cout<<endl<<"InorderbyLoop:"<<endl;
InOrderByLoop(p);
cout<<endl<<"Postorder:"<<endl;
PostOrder(p);
cout<<endl<<"PostOrderByLoop:"<<endl;
PostOrderByLoop(p);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 데이터 구조 2차원 트리의 실현 코드일.두 갈래 트리 인터페이스 2 노드 클래스 3. 두 갈래 나무 구현 이 글을 통해 여러분께 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.