【二叉树&层次遍历】Populating Next Right Pointers in Each Node
来源:互联网 发布:wince电子狗软件 编辑:程序博客网 时间:2024/05/23 02:01
Given a binary tree
struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; }
Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL
.
Initially, all next pointers are set to NULL
.
Note:
- You may only use constant extra space.
- You may assume that it is a perfect binary tree (ie, all leaves are at the same level, and every parent has two children).
For example,
Given the following perfect binary tree,
1 / \ 2 3 / \ / \ 4 5 6 7
After calling your function, the tree should look like:
1 -> NULL / \ 2 -> 3 -> NULL / \ / \ 4->5->6->7 -> NULL解法:层次遍历,特殊的地方在于遍历完一层之后要添加一个null作为标志,且当队列为空时不能放null否则会死循环
/** * 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) { Queue<TreeLinkNode> q = new LinkedList<TreeLinkNode>(); if(root == null) return; q.offer(root); q.offer(null); while(!q.isEmpty()){ TreeLinkNode pre = q.poll(); if(pre == null){ if(!q.isEmpty())//判断队列中是否还有元素 q.offer(null); continue; } pre.next = q.peek(); if(pre.left != null) q.offer(pre.left); if(pre.right != null) q.offer(pre.right); } }}
0 0
- 【二叉树&层次遍历】Populating Next Right Pointers in Each Node
- 【二叉树&层次遍历】Populating Next Right Pointers in Each Node II
- LeetCode 117 Populating Next Right Pointers in Each Node II (链表 层次遍历 推荐)
- DFS&遍历 Populating Next Right Pointers in Each Node
- 遍历 Populating Next Right Pointers in Each Node II
- level 遍历116. Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Mono
- netbeans 7.4中文显示乱码的解决方法
- 创建一个可移动的视图,让视图随着鼠标的移动而移动
- 微信第三方开发者答网友问 微信创业靠谱吗
- 腾讯实习生三面
- 【二叉树&层次遍历】Populating Next Right Pointers in Each Node
- 相交线
- VS2010 VS2012版最常用的快捷键
- [动态规划]UVA624 - CD
- Struts2通过自定义拦截器实现登录之后跳转到原页面
- 链表的就地逆置(递归+非递归)
- PLSQL无法连接数据库
- Java方法继承、方法重载、方法覆盖小总结
- Sqlserver 锁表处里