#include<stdio.h> #include<stack> #include<stdlib.h> using namespace std; struct ListNode { int data; ListNode *lchild,*rchild; }; ListNode* Createbst() { int data; scanf("%d",&data); if(data!=-1) { ListNode* root=(ListNode*)malloc(sizeof(ListNode)); root->lchild=root->rchild=NULL; root->data=data; root->lchild=Createbst(); root->rchild=Createbst(); return root; } else return NULL; } void PreOrder(ListNode *root) { stack<ListNode*> s; ListNode *p=root; while(p!=NULL || !s.empty()) { while(p!=NULL) { printf("%d",p->data); s.push(p); p=p->lchild; } if(!s.empty()) { p=s.top(); s.pop(); p=p->rchild; } } } int main() { ListNode* root; root=Createbst(); PreOrder(root); return 0; }
中序遍历
void PreOrder(ListNode*root) { stack<ListNode*>s; ListNode* p=root; while(p!=NULL || !s.empty()) { while(p!=NULL) { s.push(p); p=p->lchild; } if(!s.empty()) { p=s.top(); s.pop(); printf("%d",p->data); p=p->rchild; } } }
原文:http://www.cnblogs.com/zsboy/p/3946936.html