二叉树遍历非递归

本文介绍了三种非递归方式遍历二叉树的方法:前序遍历利用栈先输出结点再访问左右子树;后序遍历遵循左右中顺序,同样借助栈;层序遍历则采用队列实现,从根节点开始逐层访问。
摘要由CSDN通过智能技术生成

前序遍历
先结点再左右子树
使用栈的方式

  1. 输出结点(中) 压入栈中
  2. 左子树
  3. 右子树
    遇到非空结点不停的压栈 若遇到空结点 指针指向栈顶元素的右结点 则栈顶元素弹出 继续
    利用了栈先进后出的特点 每一次遇到空结点 我们首先要向上找它的父结点就是栈顶
//前序遍历非递归 
void PreOderN(btlink T)
{
   
	stack<btlink>st;
	while(T!=NULL||!st.empty())//循环结束条件 结点不为空 栈不为空
	{
   
	
	 if(T!=NULL)
	{
   
		cout<<" "<<T->data;//中 
	    st.push(T);//将结点压入栈中 
	    T=T->left; //左 
		
	}
	 else
	{
   
		T=st.top();
		st.pop();
		T
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值