题目:要求用DFS算法自底向上输出各层节点的值
算法思路:
利用递归函数levelnode实现,记录访问的层数,因为每一层用一个数组来记录结点,所以当层数大于等于数组组数时便需要新增一个数组,当递归到最底层时,便把结点存到第一个数组,自底向上依次递归把各层的结点保存到对应的数组中。
代码如下:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode* root) {
vector<vector<int>> nodelist;
levelnode(root, nodelist, 0);
return nodelist;
}
void levelnode(TreeNode *node, vector<vector<int>> &nodelist, int level) {
if (node == NULL) return;
else if (nodelist.size() <= level) {
nodelist.push_back({});
}
levelnode(node->left, nodelist, level+1);
levelnode(node->right, nodelist, level+1);
nodelist[nodelist.size()-level-1].push_back(node->val);
}
};