电源按钮刷新 589/590.N 树的前后遍历
最编程
2024-04-14 15:03:47
...
给定一个 n 叉树的根节点 root
,返回 其节点值的 前后序遍历 。
n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null
分隔(请参见示例)。
示例 1:
输入:root = [1,null,3,2,4,null,5,6] 输出:[1,3,5,6,2,4]
示例 2:
输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14] 输出:[1,2,3,6,7,11,14,4,8,12,5,9,13,10]
原理与二叉树的前序遍历和后序遍历是一样的
N叉树的定义
// 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;
}
};
N叉树的孩子节点保存在一个children数组中
前序遍历
class Solution {
public:
vector<int> result;
vector<int> preorder(Node* root) {
//终止条件
if(root == NULL){
return result;
}
//递归逻辑
// 中
result.push_back(root->val);
//依次前序遍历孩子节点
for(int i = 0; i < root->children.size(); i++){
preorder(root->children[i]);
}
return result;
}
};
后序遍历
class Solution {
public:
vector<int> result;
vector<int> postorder(Node* root) {
//终止条件
if(root == NULL){
return result;
}
//递归逻辑
//依次后序遍历孩子节点
for(int i = 0; i < root->children.size(); i++){
postorder(root->children[i]);
}
// 中
result.push_back(root->val);
return result;
}
};