public class Solution {
public void connect(TreeLinkNode root) {
if (root == null) return;
TreeLinkNode pre = root;
TreeLinkNode cur = root;
TreeLinkNode lastNode = root;//最后一个节点
while (true) {
//这个用来找到第一个有子节点的节点
int flag = 0;
TreeLinkNode panduan = pre;
while (panduan != null) {
if (panduan.right != null) {
flag = 1;
cur = panduan;
lastNode = panduan;
break;
}
if (panduan.left != null) {
flag = 1;
cur = panduan;
lastNode = panduan;
break;
}
panduan = panduan.next;
}
if (flag == 0) break;
while (cur != null) {
boolean hasLeft = false;
boolean hasRight = false;
if (cur.left != null) {
hasLeft = true;
lastNode = cur.left;
}
if (cur.right != null) {
hasRight = true;
lastNode = cur.right;
}
if (hasLeft && hasRight) {
cur.left.next = cur.right;
}
if (cur.next != null) {
if (cur.next.left != null) {
lastNode.next = cur.next.left;
lastNode = lastNode.next;
} else if (cur.next.right != null) {
lastNode.next = cur.next.right;
lastNode = lastNode.next;
}
}
cur = cur.next;
}
if (panduan.left != null)
pre = panduan.left;
else {
pre = panduan.right;
}
}
}
}
117. Populating Next Right Pointers in Each Node II
最新推荐文章于 2021-01-29 16:34:55 发布
767

被折叠的 条评论
为什么被折叠?



