先谢谢各位大大~
如下一棵树:
1
/ \
2 9
/ \ / \
3 4 5 6
/ \
9 10
传入一棵树头节点,导出的结果应该是从下往上 从左往右顺序的数组
上述的导出应该是[9,10,3,4,5,6,2,9,1]这样的数组
vector<int> tree_leaf(TreeNode* note) {
}
我考虑了个思路,但是没能写出运行成功的代码,希望前辈指教啊。。
- 在递归循环过程中,设置一个
int layer记录当前的层级 ,在全局用一个vector<vector<int>>array的方形矩阵记录下每个层级的值 - 在这个逻辑中,递归退出的基点遍历到某节点左右树枝均为空,此时用返回层级为 0 ,并同时记录当前节点的值为
array[layer].pushback(current_note.value) - 根据上述逻辑。在图中 3 遍历完了的时候, 3 这个节点的 layer 还是没能拿到,此时回到 3 的父节点 2 , 2 再去右子数遍历到 9 ,这时 array[0].pushback(9),但是之前的 3 却无法再次被遍历到无法入数组了,这个该如何解决呢?
- 这个可以用队列循环的思路来做,但是如果用递归如何完成呢? 谢谢各位大大。
在下最近被递归,特别是 递归中返回值利用 ,还有 临时的压栈值 给搞糊涂了,如果有相关的教程或者书籍推荐,在下真是不甚感激啊!!