最近数据结构学到二叉树,相比之前的课程有点难以理解,尤其是链式二叉树的建立。所以记录一下学习过程。
依照教材的操作
链式二叉树的结构体定义(二叉链表)
教材中的操作并没有单独再次定义栈的结构体,而是将栈塞入了树的结构体定义(因为二叉树的建立,遍历操作涉及栈的操作,所以需要定义栈)
下图是分开定义的操作
结构体定义后我们来看看二叉树的创建操作
教材用到的方法是遍历树的括号表示法,通过对于特定符号进行特定的入出栈的操作
对于‘( ’,我们要做的是将前面的节点作为父母节点入栈,同时设置标志k=1,以便之后进行对于左孩子的操作。
对于‘ )’,我们可知对左右孩子的遍历已完成即可。
对于‘ ,’,表示左孩子已遍历完成,接下来只需操作右孩子节点,我们设置标志为k=2。
对于遍历至数据,我们需要一个节点,并且根据特定看k值来操作栈中节点,k=1时,我们需要将此节点作为栈中节点的左孩子节点来操作,同理,右孩子节点则是k=2时。
具体我把我的理解用图表示了出来
最后我们进行编译运行,发现不能运行,无奈由于自己水平太次,并不能解释,但是我的大佬朋友给出了好的解释,在这放上链接。https://blog.csdn.net/shinra1/article/details/109121952?utm_source=app
菜鸟一枚,如果有错误希望大家指正。