生成二叉树
图例如下:
结果应该是分别是:
广度优先: a -> b -> c -> d -> f -> e -> g
先序遍历: a -> b -> d -> e -> f -> g -> c
中序遍历: e -> d -> b -> g -> f -> a -> c
后序遍历: e -> d -> g -> f -> b -> c -> a
广度优先遍历
结果存在result里面,如果不存可以少一层变量
递归版前中后序遍历
非递归版遍历
这个地方强烈建议读一下下面的第一个链接,我遵照着那篇文章实现的,只是用Go改写了而已。
seqStack
首先定义一个数据结构,用来存储一些Node的信息。
preOrder
midOrder
postOrder
这里是可以运行的,但是总会抛出一个数组越界的错误,我看了半天也没看出来哪里有问题,Mac版的devel我这边又有bug,没用起来。至少思路对了,我后面再看一下哪里的问题。(感谢 @RiXu 指正)
References