116. Populating Next Right Pointers in Each Node
来源:互联网 发布:央行网络支付新规 编辑:程序博客网 时间:2024/06/07 02:26
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
思路:
定义了三个指针,first、pre、current。
first 指向每一行的起始位置
pre 指向父节点
current 指向当前节点
根据current和pre的关系,可以做出如下判断:
1. current == pre.left 则直接让current.next = pre.right
2. current == pre.right 可以分为两种情况:
(1) pre.next == NULL
例如:当pre指向1并且current指向3时,1的next为NULL,此时fisrt、pre均下移到2、3那一行。
(2) pre.next != NULL
例如:当pre指向2并且current指向5时,此时5的next应指向6
根据上述的思路,程序如下:
/** * 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 pre = root; TreeLinkNode current = pre.left; TreeLinkNode first = root; while(current != null) { if(current == pre.left) { current.next = pre.right; }else if(current == pre.right) { if(pre.next != null) { current.next = pre.next.left; pre = pre.next; }else { first = first.left; pre = first; current = pre.left; continue; } } current = current.next; } }}
阅读全文
0 0
- 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
- 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
- JavaScript第一章
- SpringMVC 1
- html表单标签
- 登录界面+验证码
- [LeetCode]Concatenated Words
- 116. Populating Next Right Pointers in Each Node
- 量化进阶——京东量化教你如何操作期限套利
- Intellij idea 快捷键2--生成常用代码
- HDU2041超级楼梯
- html框架标签
- mysql约束
- sql中的case when
- 动态创建表格
- 随机更换窗体背景