LeetCode-117. Populating Next Right Pointers in Each Node || (JAVA)
来源:互联网 发布:hitleap类似的软件 编辑:程序博客网 时间:2024/06/01 08:14
117. Populating Next Right Pointers in Each Node II
Follow up for problem "Populating Next Right Pointers in Each Node".
What if the given tree could be any binary tree? Would your previous solution still work?
Note:
- You may only use constant extra space.
For example,
Given the following binary tree,
1 / \ 2 3 / \ \ 4 5 7
After calling your function, the tree should look like:
1 -> NULL / \ 2 -> 3 -> NULL / \ \ 4-> 5 -> 7 -> NULL
LeetCode-116. Populating Next Right Pointers in Each Node (JAVA)
辅助队列同样适用
public void connect(TreeLinkNode root) {if (root == null)return;// 需要获得第一个node使用双端队列Deque<TreeLinkNode> dq = new LinkedList<>();dq.addLast(root);int curNum = 1;while (!dq.isEmpty()) {TreeLinkNode node = dq.removeFirst();curNum--;if (node.left != null)dq.addLast(node.left);if (node.right != null)dq.addLast(node.right);if (curNum > 0)node.next = dq.getFirst();elsecurNum = dq.size();}}
双层循环模拟BFS
// Java BFS Solution constant spacepublic void connect(TreeLinkNode root) {// 用于遍历本层结点TreeLinkNode curLevel = root;while (curLevel != null) {// nextLevel用于保存下一层结点第一个结点// 防止为空,新建一个伪头结点TreeLinkNode nextLevel = new TreeLinkNode(0);// nextCur用于实时连接下一层结点的next域TreeLinkNode nextCur = nextLevel;while (curLevel != null) {if (curLevel.left != null) {nextCur.next = curLevel.left;nextCur = nextCur.next;}if (curLevel.right != null) {nextCur.next = curLevel.right;nextCur = nextCur.next;}// 指向下一个结点curLevel = curLevel.next;}// 指向下一层结点的第一个结点curLevel = nextLevel.next;}}
两个循环的BFS
.伪代码(1)初始化队列Q;visited[n]=0;(2)访问顶点v;visited[v]=1;顶点v入队列Q;(3) while(队列Q非空) v=队列Q的对头元素出队; w=顶点v的第一个邻接点; while(w存在) 如果w未访问,则访问顶点w; visited[w]=1; 顶点w入队列Q; w=顶点v的下一个邻接点。
如查找每层结点的最右侧结点
// 此函数实现查找每层结点的最右侧结点public List<Integer> rightSideView(TreeNode root) {Queue<TreeNode> queue = new LinkedList<>();List<Integer> rst = new ArrayList<>();if (root == null)return rst;queue.offer(root);while (!queue.isEmpty()) {int levelNum = queue.size();for (int i = 0; i < levelNum; i++) {if (queue.peek().left != null)queue.offer(queue.peek().left);if (queue.peek().right != null)queue.offer(queue.peek().right);if (i == levelNum - 1)rst.add(queue.poll().val);elsequeue.poll();}}return rst;}
0 0
- LeetCode-117. Populating Next Right Pointers in Each Node || (JAVA)
- 【Leetcode】Populating Next Right Pointers in Each Node in JAVA
- [Leetcode] Populating Next Right Pointers in Each Node (Java)
- [Leetcode] Populating Next Right Pointers in Each Node II (Java)
- [LeetCode][Java] Populating Next Right Pointers in Each Node
- [LeetCode][Java] Populating Next Right Pointers in Each Node II
- leetcode:Populating Next Right Pointers in Each Node 【Java】
- leetcode:Populating Next Right Pointers in Each Node II 【Java】
- Populating Next Right Pointers in Each Node Python Java Leetcode
- leetcode-java-116. Populating Next Right Pointers in Each Node
- 【leetcode】116. Populating Next Right Pointers in Each Node【java】
- LeetCode-116. Populating Next Right Pointers in Each Node (JAVA)
- LeetCode 117. Populating Next Right Pointers in Each Node II
- [LeetCode]117.Populating Next Right Pointers in Each Node II
- [Leetcode] 117. Populating Next Right Pointers in Each Node II
- [leetcode] 117.Populating Next Right Pointers in Each Node II
- [LeetCode]117. Populating Next Right Pointers in Each Node II
- Leetcode 117. Populating Next Right Pointers in Each Node II
- 动态规划 03 (采药)
- JCE无限制权限策略文件
- 文章标题
- 毕设——图像视觉显著性目标检测(第五周到第七周工作总结)
- SQL面试题
- LeetCode-117. Populating Next Right Pointers in Each Node || (JAVA)
- [转]Eclipse下tomcat输出路径配置
- iOS 网络图片下载_队列与线程_swift3
- Fibonacci数
- 使用eclipse调试git java maven项目
- 关于java中jquery框架无效的解决办法
- form表单的onsubmit() return问题
- DAY3学习笔记
- MySQL 以UPDATE更新数据