欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

电源按钮刷新 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;
    }
};