今天听了我们数据结构老师讲三序序列,发现有很多同学不能根据二叉树推,特发此文讲解。
对于三序序列,我们可以选择构造一个表格并创造一个指针,将指针指于二叉树根结点,对应表格则如下所示,若某节点无左孩子或右孩子,则在对应表格内打叉。我们假定我们在运行程序,则对于前序序列来说为先根结点再左再右。指针指向根节点A,则对于A来说执行根节点操作,把A放入先序序列中。
此时先序序列为:A。
之后执行左子树操作,指针指向A的左子树的根节点B。
指针指向根节点B,则对于B来说执行根节点操作,把B放入先序序列中。
此时先序序列为:A,B。
之后执行左子树操作,指针指向B的左子树的根节点D。
指针指向根节点D,则对于D来说执行根节点操作,把D放入先序序列中。
此时先序序列为:A,B,D。
此时A的左子树已经遍历完毕,遍历A的右子树,此时指针指向A的右子树根节点C。
指针指向根节点C,则对于C来说执行根节点操作,把C放入先序序列中。
此时先序序列为:A,B,D,C。
之后执行左子树操作,指针指向C的左子树的根节点E。
指针指向根节点E,则对于E来说执行根节点操作,把E放入先序序列中。
此时先序序列为:A,B,D,C,E。
此时C的左子树已经遍历完毕,遍历C的右子树,此时指针指向C的右子树根节点F。
指针指向根节点F,则对于F来说执行根节点操作,把F放入先序序列中,此时根节点全部遍历完毕,先序序列为:A,B,D,C,E,F。
子树遍历步骤如下图所示:
同理,中序序列和后序序列也可以用此方法进行判断,结果如下图所示。