第三种情况是这样的:
1
/ \
/ \
2 3
/ \
/ \
4 5
/ \
/ \
6 7
以这个二叉树为例,开三个数组
node[N]: 1 2 3 4 5 6 7
left[N]: 2 4 / / 6 / /
right[N]: 3 5 / / 7 / /
重建很简单,同时遍历三个数组即可
也可以合并成一个数组:
1 2 3 4 5 / / / / 6 7 / / / /
这样的话重建会复杂一些,需要用一个queue
来记录当前处理的node链表。
感觉有些复杂的是第四种,如果用前序的话(对NULL用/表示),
原树会被序列化成
1 2 4 / / 5 6 / / 7 / / 3 / /
需要用递归来处理左右两个子树,并且右子树的开始要依赖
于左子树的结束。