难度评级:简单
给定一个 n 叉树的根节点 root
,返回 其节点值的 后序遍历 。
n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null
分隔(请参见示例)。
示例 1:
输入:root = [1,null,3,2,4,null,5,6] 输出:[5,6,3,2,4,1]
题解思路:DFS
需要找到N叉树的后序遍历,可以采用DFS方法递归,后序遍历在二叉树中的顺序是左-右-根,也就是最后输出根节点,故我们需要先将孩子节点遍历,通过for循环将孩子节点作为根节点递归遍历,直到找到最下层的孩子结点,将其压入答案的vector中即可。
题解代码如下:
/*
// Definition for a Node.
class Node {
public:
int val;
vector<Node*> children;
Node() {}
Node(int _val) {
val = _val;
}
Node(int _val, vector<Node*> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
public:
vector<int> res;
void last_DFS(Node* root){
if(root == NULL){ // 判空
return;
}
for(auto i : root->children){ // 遍历孩子
last_DFS(i);
}
res.push_back(root->val); // 找到最下层的孩子并压入
}
vector<int> postorder(Node* root) {
last_DFS(root);
return res;
}
};