【Leetcode】NO.117. 填充每个节点的下一个右侧节点指针 II (C++&Python)[二叉树]
2022/1/5 22:34:20
本文主要是介绍【Leetcode】NO.117. 填充每个节点的下一个右侧节点指针 II (C++&Python)[二叉树],对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目:117. 填充每个节点的下一个右侧节点指针 II
给定一个二叉树
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:
思路跟116一样;
这里在写的过程中不小心把root写在了循环条件上这个时候是超时
代码
C++ 版本
/* // Definition for a Node. class Node { public: int val; Node* left; Node* right; Node* next; Node() : val(0), left(NULL), right(NULL), next(NULL) {} Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {} Node(int _val, Node* _left, Node* _right, Node* _next) : val(_val), left(_left), right(_right), next(_next) {} }; */ class Solution { public: Node* connect(Node* root) { // 基本上就是层序遍历 // 在最后节点之前指向下一个节点 queue<Node*> que; if(root != NULL){ que.push(root); } while(!que.empty()){ int size = que.size(); for(int i=0;i<size;i++){ Node* node = que.front(); que.pop(); if(i<size-1){ node->next = que.front(); } if(node->left) que.push(node->left); if(node->right) que.push(node->right); } } return root; } };
这篇关于【Leetcode】NO.117. 填充每个节点的下一个右侧节点指针 II (C++&Python)[二叉树]的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-04Python外包有哪些常见的主要库-icode9专业技术文章分享
- 2024-10-02基于深度学习的钢铁缺陷检测系统(yolov8、注意力机制、PyQt5界面、Python)
- 2024-10-01怎么用python搭建一个系统-icode9专业技术文章分享
- 2024-09-30Python基础入门教程
- 2024-09-30获取参数学习:Python中的基础教程
- 2024-09-30Python编程基础详解
- 2024-09-29点击加载学习:Python编程基础教程
- 2024-09-29数据科学五大Python前端库:第二部分
- 2024-09-27使用python 将ETH账户的资产打散
- 2024-09-26Python编程基础