C++二叉链表遍历理论基础

本节主要研究二叉树中二叉链表的先序遍历原理。基础理论知识有二叉链表的构造原理余递归的思想。

根据递归的思想,我们首先应当建立二叉链表的结点类,包括成员变量data域,指向左右子树的指针,并对链表节点类的构造函数进行重载。其次,我们应当建立二叉链表类,包括成员变量指向根节点的头指针,代表二叉树属性的一些参数,和诸多类内函数。由于本节讲述的是先序遍历方法,因此类内函数应当由先序遍历方法函数。又如,本案例涉及对结点数据域数值的打印输出,因此应当另写函数对数据域的值进行打印操作。

二叉链表建立好后,可以通过调用类内先序遍历函数进行先序遍历的开始。随着遍历进行,函数会不挺访问和自己类一样的二叉链表,不断调用自己,实现了递归。

先序遍历的函数的构思:

1. 判断指针指向的结点是否为空,若为空,返回上一级;

2. 不是空,打印输出该节点的数据域数值

3. 将指针更新为指向该结点的左子树的指针

4. 将指针更新为指向该结点的右子树的指针

重点:我第一次想不明白,将指针更新为指向左子树指针后,会发生什么。其实,更新指针后,依然会进行1,2,3,4四个操作,直到指针为NULL或者子函数体执行完毕。它永远会返回到上一级调用函数内部。因此,二叉链表的遍历是“跳来跳去”的

接下来的中序遍历和后序遍历,和先序遍历的函数非常相似。只不过是cout语句的位置不同。除此之外,对于一棵树,三种访问方法的访问总路线很相似,只不过是各个结点的访问时机不同。对于每一个结点,均要路过三次,第一次路过即打印:先序,第二次路过打印:中序,否则:后序

时间复杂度

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值