力扣——N叉树的前序遍历

给定一个 N 叉树,返回其节点值的前序遍历

例如,给定一个 3叉树 :

 

 

返回其前序遍历: [1,3,5,6,2,4]

 

class Solution {
    public List<Integer> res = new ArrayList<Integer>();
    public List<Integer> preorder(Node root) {
        if(root == null)
            return res;
        res.add(root.val);
        for(Node child : root.children){
            preorder(child);
        }
        return res;
    }
    /*public List<Integer> preorder(Node root) {
        List<Integer> res = new ArrayList<Integer>();
        if(root == null)
            return res;
        Stack<Node> stack = new Stack<Node>();
        stack.add(root);
        while(!stack.isEmpty()){
            Node node = stack.pop();
            res.add(node.val);
            for(int i = node.children.size()-1;i >= 0;i--){
                stack.add(node.children.get(i));
            }
        }
        return res;        
    }*/
}

 

转载于:https://www.cnblogs.com/JAYPARK/p/10357759.html

的层序遍历是一种广度优先搜索的算法,它按照层次逐层地遍历二的节点。可以通过使用一个队列来实现层序遍历。首先将根节点入队,然后循环执行以下步骤,直到队列为空: 1. 弹出队首节点,并将其值加入结果数组。 2. 如果该节点有左孩子,则将左孩子入队。 3. 如果该节点有右孩子,则将右孩子入队。 4. 重复以上步骤直到队列为空。 以下是一个用C++实现的二层序遍历的示例代码: ```cpp class Solution { public: vector<double> averageOfLevels(TreeNode* root) { vector<double> result; // 存放每层的平均值 queue<TreeNode*> q; // 队列 if (root == nullptr) { return result; } q.push(root); // 根节点入队 while (!q.empty()) { double sum = 0; // 当前层节点值的和 int size = q.size(); // 当前层节点数量 for (int i = 0; i < size; i++) { TreeNode* node = q.front(); q.pop(); sum += node->val; if (node->left) { q.push(node->left); } if (node->right) { q.push(node->right); } } result.push_back(sum / size); // 计算平均值并加入结果数组 } return result; } }; ``` 以上代码通过遍历每一层的节点,并计算该层节点值的和和数量,然后将平均值加入结果数组。最终返回结果数组即可。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [力扣刷题之二的层序遍历](https://blog.csdn.net/m0_58367586/article/details/124107118)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值