二叉树排序非递归算法学习笔记

本文详细介绍了二叉树的前序、中序和后序非递归遍历算法,包括思路和实现步骤。通过创建一个3层二叉树进行验证,适合数据结构学习者参考。
摘要由CSDN通过智能技术生成

最近在学习数据结构,在这写一下二叉树的前序、后序和中序的递归遍历和非递归遍历算法和实现。

1、二叉树的前序遍历:

1)递归遍历算法和实现:根节点>>左孩子>>右孩子

void preOrder(MyStruct *proot)
{
	if (proot != nullptr)
	{
		cout << proot->Nodedata << " ";
		preOrder(proot->pLeft);
		preOrder(proot->pRight);
	}
}

2)非递归遍历算法和实现:先判断传入节点是否为空,为空则什么都不用做。然后从根节点一直向左孩子访问,并把访问过的节点全部压入stack中,一直到当前的节点的左孩子为空。将栈中第一个节点弹出并指向当前结点(pcurr=pcurr->pright)的右孩子,如果pcurr不为空则访问该节点,并判断pcurr->pleft是否为空,不为空则继续访问左孩子,为空则继续弹出栈中元素,继续以上步骤直到栈为空。

void PreOrder(MyStruct *proot)
{
	MyStruct *pcurr = proot;
	stack<MyStruct*> mystack1;
	if (pcurr == NULL)
	{
		return;
	}
	while (!mystack1.empty() || pcurr != NULL)
	{
		while (pcurr != nullptr)
		{
			cout << pcurr->Nodedata << "  "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值