[LeetCode]Populating Next Right Pointers in Each Node II
来源:互联网 发布:关于人工智能的辩论赛 编辑:程序博客网 时间:2024/05/29 15:24
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
利用宽搜顺序搜索每一行的二叉树,然后利用深搜搜索该节点的下一个next节点。
/** * Definition for binary tree with next pointer. * public class TreeLinkNode { * int val; * TreeLinkNode left, right, next; * TreeLinkNode(int x) { val = x; } * } */public class Solution {Queue<TreeLinkNode> que = new LinkedList<>();public void connect(TreeLinkNode root) {if (root == null)return;que.offer(root);while (!que.isEmpty()) {TreeLinkNode tln = que.poll();if (tln.left != null) {que.offer(tln.left);tln.left.next = dfs2(tln);}if (tln.right != null) {que.offer(tln.right);tln.right.next = dfs3(tln.next);}}}private TreeLinkNode dfs2(TreeLinkNode root){if(root == null) return null;if(root.right!=null) return root.right;if(root.next!=null&&root.next.left!=null){return root.next.left;}return dfs2(root.next);}private TreeLinkNode dfs3(TreeLinkNode root){if(root ==null) {return null;}else{if(root.left!=null) return root.left;if(root.right!=null)return root.right;}return dfs3(root.next);}}
递归:参考 戴方勤 LeetCode题解
/** * Definition for binary tree with next pointer. * public class TreeLinkNode { * int val; * TreeLinkNode left, right, next; * TreeLinkNode(int x) { val = x; } * } */public class Solution {public void connect(TreeLinkNode root) {if(root == null) return;TreeLinkNode dummy = new TreeLinkNode(-1);for(TreeLinkNode cur=root,fut=dummy;cur!=null;cur=cur.next){if(cur.left!=null){fut.next = cur.left;fut = fut.next;}if(cur.right!=null){fut.next = cur.right;fut = fut.next;}}connect(dummy.next);}}
0 0
- 【LeetCode】Populating Next Right Pointers in Each Node Populating Next Right Pointers in Each Node II
- LeetCode Populating Next Right Pointers in Each Node II
- [Leetcode] Populating Next Right Pointers in Each Node II
- [LeetCode] Populating Next Right Pointers in Each Node II
- leetcode 79: Populating Next Right Pointers in Each Node II
- [Leetcode] Populating Next Right Pointers in Each Node ii
- leetcode Populating Next Right Pointers in Each Node II
- 【leetcode】Populating Next Right Pointers in Each Node II
- [Leetcode]Populating Next Right Pointers in Each Node II
- [leetcode] Populating Next Right Pointers in Each Node II
- LeetCode-Populating Next Right Pointers in Each Node II
- LeetCode - Populating Next Right Pointers in Each Node II
- [LeetCode]Populating Next Right Pointers in Each Node II
- leetcode Populating Next Right Pointers in Each Node II
- LeetCode | Populating Next Right Pointers in Each Node II
- [leetcode]Populating Next Right Pointers in Each Node II
- 【LeetCode OJ】Populating Next Right Pointers in Each Node II
- [LeetCode] Populating Next Right Pointers in Each Node II
- 多用户远程服务器xrdp
- 机器学习基石笔记1——在何时可以使用机器学习(1)
- mongodb总结
- 阿里巴巴2014年暑假实习生笔试题+答案详解
- 06-2. 字符串字母大小写转换(10)
- [LeetCode]Populating Next Right Pointers in Each Node II
- 三维重建论文整理2
- "error while loading shared libraries: xxx.so.x"错误的原因和解决办法
- jquery之动态绑定事件
- poj1450
- report need backup备份冗余度
- CC2530 的IO口中断
- 06-3. 单词长度(15)
- 从storyboard加载视图控制器