// createBiTree.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stack>
#include <iostream>
using namespace std;
//定义二叉树的结构
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//创建二叉树
//使用递归调用的方式
bool CreateBiTree(BiTree &T){
char ch;
cin>>ch;
if (ch == '#') T=0; //将指针赋值为空
else{
if (!(T = (BiTNode *)malloc(sizeof(BiTNode)))) return 1;
T->data = ch;
CreateBiTree(T->lchild);//递归创建左子树
CreateBiTree(T->rchild);//递归创建右子树
}
return 0;
}//CreateBiTree
bool InOrderTraverse(BiTree T){
//采用二叉链表存储结构
//中序遍历二叉树T的非递归算法,对每个数据元素进行输出
stack<BiTree> S;
BiTNode *p=T;
while (p || !S.empty()){
if (p) {
S.push(p);
p = p->lchild;
}
else {
p=S.top();
cout<<p->data<<endl;
p=p->rchild;
S.pop();
}
}//while
return 0;
}
int main(int argc, char* argv[])
{
BiTree testree;
if(CreateBiTree(testree))
cout<<"二叉树没有创建成功"<<endl; //二叉树没有创建成功
if(!InOrderTraverse(testree))
return 1; //没有遍历成功
return 0;
}
二叉树的中序输出
最新推荐文章于 2023-08-10 07:51:54 发布