二叉树

/** 二叉树的二叉链表节点结构定义*/

typedef struct BiTNode{

	TElemType data;  // 节点数据
	
	struct BiTNode *left, *right; //左右子树指针

}BiTNode, *BiTree;


/** 前序遍历 */
 
// 递归
void PreOrderTraverse(BiTree T)
{
	if (T == NULL)
		return ;

	printf("%d", T->data);

	PreOrderTraverse(T->left);// 函数内不停地调用了自身, 一次函数调用完成后会返回上一层, 直至第一层
	PreOrderTraverse(T->right); // 然后再开始右子树的前序遍历

}

// 非递归
void PreOrderTraverse(BiTree T)
{
      InitStack(S); // 初始化一个空栈
      Push(S, T); // 根指针进栈

      while (!StackEmpty(S)) 
      {
           while (GetTop(S, p) && p)
           {
               printf("%d", p->data); // 访问节点
               Push(S, p->left);  // 左子树走到尽头
           }

           Pop(S, p);  // 空指针出栈
          
           if (!StackEmpty(S))
           {
               Pop(S, p);
               Push(S, p->right);
           }
           
      }

}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值