二叉树的遍历与创建

本文详细介绍了二叉树的遍历方法,包括递归和非递归实现的先序、中序、后序遍历及层次遍历,并提供了具体的C++代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二叉树遍历:
递归实现:
void BT_Order(BTreeNode *t)
{

if(NULL == t)return ;


//先序处理插入cout<<t->data<<' ';
BT_Order(t->lchild);
//中序处理插入cout<<t->data<<' ';
BT_Order(t->rchild);
//后序处理插入cout<<t->data<<' ';
}


非递归实现:(后序遍历???)

void BT_Order(pTreeT root)
{
stack<treeT *> s;

while ( root) || !s.empty())
{
if (root)
{
//若为先序,则插入visit(root);
s.push(root);
root = root->left;
}
else
{
root = s.top();
//若为中序,插入visit(root);
s.pop();
root = root->right;
}
}
}


层次遍历:
void BT_LevelOrder(pTreeT root)
{
queue<treeT *> q;
treeT *treePtr;

assert( NULL != root );

q.push(root);

while (!q.empty())
{
treePtr = q.front();
q.pop();
visit(treePtr);

if (NULL != treePtr->left)
{
q.push(treePtr->left);
}
if (NULL != treePtr->right)
{
q.push(treePtr->right);
}

}
}

创建二叉树
void creat_BT(tree &t)
{
char ch;

cin>>ch;
if(ch == '0')
{
t=NULL;
}
else
{
t = new binary_tree;
if(!t) exit(0); //如果没成功申请空间 则退出

t->data=ch;
creat_tree(t->lchild);
creat_tree(t->rchild);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值