首页 > 代码库 > 二叉树遍历的非递归实现
二叉树遍历的非递归实现
#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=http://www.mamicode.com/data;"%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; } }}
二叉树遍历的非递归实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。