当前位置: 首页 > news >正文

leetcode(填充每个节点的下一个右侧节点指针 II)

给定一个二叉树:

struct Node {int val;Node *left;Node *right;Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL 。

初始状态下,所有 next 指针都被设置为 NULL 。

思路:

采用层级遍历,也可以称广度优先遍历(BFS),建立一个队列存储,按每一层搜索查看

首先建立数组,将根节点放入,开始操作

计算此节点算在的这一层元素个数(队列长度),

对每一层,设一个pre节点初始化为null

for循环重复直到这一层元素均被遍历,使下一层它们的左右子结点均被加入。具体操作是

弹出首个节点,判断pre是否为null。如果为null表明此元素是这一层的首个元素,不需要指向。否则,设置他的next。判断完成后,将他的左右子结点(非空)加入队列。

/*
// Definition for a Node.
class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val = _val;}public 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 null;LinkedList<Node> queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()) {int levelnum=queue.size();Node prev=null;for(int i=0;i<levelnum;i++) {Node curr = queue.poll();if(prev!=null) {prev.next = curr;}prev=curr;if (curr!=null&&curr.left != null) {queue.add(curr.left);}if (curr!=null&&curr.right != null) {queue.add(curr.right);}}}return root;}
}

http://www.dtcms.com/a/399766.html

相关文章:

  • 如何提高网站在搜索引擎中的排名wordpress主题有后台
  • 展厅讲解机器人如何选?AI大模型是关键
  • 做网站找沈阳横纵网络通辽网站制作公司
  • PyTorch深度学习实战【12】之基于RNN的自然语言处理入门
  • 【超详细图文教程】Windows 系统 Go 语言环境安装与配置详细教程​
  • 广州网站制作实力乐云seo网站开发知识视频教程
  • hive架构及搭建
  • JavaWeb之快递管理系统(完结)
  • 网站建设公司有哪几家微信广告朋友圈投放
  • 网站运行环境建设方案进一步强化网站建设
  • WIFI大师小程序4.1.9独立版源码
  • sparkml 多列共享labelEncoder pipeline方案
  • Python临时文件与目录完全指南:从基础到高级实战
  • 哪个网站收录排名好东台网络推广
  • 免费个人logo设计网站网页设计好的网站
  • 网站COM和CN有啥区别
  • 手机网站如何做才能兼容性各种手机个人网站备案需要什么
  • Least squares prediction and Indicator Variables
  • wordpress站群是什么网站官网建设企业
  • Qt(常用的对话框)
  • 网站被墙怎么做跳转360浏览器打开是2345网址导航
  • Qt QPainter 绘图系统精通指南
  • 宣城网站开发专业制西安巨久科技网站建设
  • LVGL详解
  • 饰品销售网站功能建设seo思维
  • 什么是UT测试
  • 制作网站需要的技术wordpress的xmlrpc
  • Playwright 高级用法全解析:从自动化到测试工程化的进阶指南
  • 视觉SLAM第14讲:现在与未来
  • 系统基模的思想