【每日一题】填充每个节点的下一个右侧节点指针 II

编程入门 行业动态 更新时间:2024-10-27 06:22:55

【每日一题】填充每个<a href=https://www.elefans.com/category/jswz/34/1771452.html style=节点的下一个右侧节点指针 II"/>

【每日一题】填充每个节点的下一个右侧节点指针 II

文章目录

  • Tag
  • 题目来源
  • 题目解读
  • 解题思路
    • 方法一:BFS
  • 其他语言
    • python3
  • 写在最后

Tag

【BFS】【树】【2023-11-03】


题目来源

117. 填充每个节点的下一个右侧节点指针 II


题目解读

为二叉树中的每一个节点填充下一个节点。


解题思路

方法一:BFS

本题题目意思明确,我们只需要遍历二叉树每一层的节点,将节点的 next 指针指向同一层的下一个节点即可,属于二叉树层序遍历的基础题。

实现代码

/*
// 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) {if (root == NULL) return root;queue<Node*> que;que.push(root);Node* currNode, *prevNode;while (!que.empty()) {int size = que.size();for (int i = 0; i < size; ++i) {if (i == 0) {prevNode = que.front(); que.pop();currNode = prevNode;}else {currNode = que.front(); que.pop();prevNode->next = currNode;prevNode = prevNode->next;}if (currNode->left) que.push(currNode->left);if (currNode->right) que.push(currNode->right);}}return root;}
};

复杂度分析

时间复杂度: O ( N ) O(N) O(N), N N N 为树上的节点数。

空间复杂度: O ( N ) O(N) O(N)。

其他语言

python3

"""
# Definition for a Node.
class Node:def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None):self.val = valself.left = leftself.right = rightself.next = next
"""class Solution:def connect(self, root: 'Node') -> 'Node':if root is None:return rootqueue = deque([root])while queue:n = len(queue)last = Nonefor _ in range(n):cur = queue.popleft()if cur.left:queue.append(cur.left)if cur.right:queue.append(cur.right)if last:last.next = curlast = curreturn root

写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。

最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 👍 哦。

更多推荐

【每日一题】填充每个节点的下一个右侧节点指针 II

本文发布于:2023-11-30 13:56:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1650997.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:节点   指针   II

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!