这个题很巧妙
要一层一层的做 每一层记录一下第一个node 用来进入下一层 然后一个指针在这一层中向后 每次添加的是指针所在层的下一层的next
像那种right child 它的next指向parent.next.left
public class Solution {
public void connect(TreeLinkNode root) {
if ( root == null )
return;
TreeLinkNode pre = root;
TreeLinkNode cur = root;
while( pre.left != null ){
cur = pre;
while ( cur != null ){
cur.left.next = cur.right;
if ( cur.next != null )
cur.right.next = cur.next.left;
cur = cur.next;
}
pre = pre.left;
}
}
}recursice
public class Solution {
public void connect(TreeLinkNode root) {
if ( root == null )
return;
if ( root.left != null ){
root.left.next = root.right;
if ( root.next != null)
root.right.next = root.next.left;
}
connect ( root.left);
connect ( root.right);
}
}
本文介绍了一种解决树形结构中特定节点连接问题的算法。通过两种方法实现:一种是非递归方式,使用while循环逐层遍历树的节点,并调整每个节点的next指针;另一种是递归方式,直接调整当前节点的左右子节点的next指针。

296

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



