二叉树相关: 遍历、创建、打印

题目来自 leetcode-cn 的探索卡片:
https://leetcode-cn.com/explore/learn/card/data-structure-binary-tree/

遍历

com.youthlin.leetcode.tree.TreeVisitor

前序遍历

递归版本的太简单了,只贴前序遍历方式。
前序递归是先访问本结点,然后递归调用左子树,再递归调用右子树。
中序和后序都差不多,只是把访问结点那行移动一下就行。

这里我传入了一个 Consumer, 而不是在方法中直接打印结点值,或者加到链表、数组中。 继续阅读“二叉树相关: 遍历、创建、打印”

树结构的存储

面试题:

怎样把一棵树存到文件中,然后读入恢复为原来的树。以二叉树为例。

在面试官提示了“把树变成一维”后我尝试用非递归遍历结果还是没写出来(真是自己作死,干嘛要用非递归呢)
回到学校看了一下学数据结构时书上的代码。首先需要创建一棵树,书上是设置了一个不可能出现在树中的值作为结束符,用先根序列输入创建树。比如

可以用(-1,[1,2,4,-1,-1,5,-1,-1,3,-1,-1])来创建。
恩,那就简单了,存储时只需要把这个序列和结束符存起来就行了呗。写完后才发现这题这么简单……
继续阅读“树结构的存储”