给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL。
public class PerfectTreePointRightBrother {
public static Node connect(Node root) {
if (root == null) {
return null;
}
if (root.left != null) {
root.left.next = root.right;//root的左孩子指向右孩子节点
if (root.next != null) { //如果root有兄弟节点
root.right.next = root.next.left; //root的右孩子节点指向root的兄弟节点的左孩子节点
}
}
connect(root.left);
connect(root.right);
return root;
}
public static void main(String[] args) {
Node node = new Node(1);
node.left = new Node(2);
node.right = new Node(3);
Node connect = connect(node);
System.out.println(connect);
}
}
package com.pshdhx.Algorithm;
/**
* @author pshdhx
* @date 2022-03-11 9:36
*/
public class Node {
public int val;
public Node left;
public Node right;
public Node next;
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val, Node _left, Node _right, Node _next) {
val = _val;
left = _left;
right = _right;
next = _next;
}
}