public class BinaryTreeToDoubleLinkList36 {
static class Node {
int val;
Node left;
Node right;
public Node(int val) {
this.val = val;
}
@Override
public String toString() {
return "Node{" +
"val=" + val +
", left=" + left +
", right=" + right +
'}';
}
}
public static void main(String[] args) {
Node root = new Node(8);
Node node21 = new Node(6);
Node node22 = new Node(10);
Node node31 = new Node(5);
Node node32 = new Node(7);
Node node33 = new Node(9);
Node node34 = new Node(11);
root.left = node21;
root.right = node22;
node21.left = node31;
node21.right = node32;
node22.left = node33;
node22.right = node34;
transfer(root);
while (head != null) {
System.out.print(head.val + " ");
head = head.right;
}
}
static Node head = null;
static Node pre = null;
//中序遍历满足条件
private static void transfer(Node root) {
if (root == null)
return;
//递归左边
transfer(root.left);
//处理
root.left = pre;
if (pre != null)
pre.right = root;
pre = root;
if (head == null)
head = root;
//递归右边
transfer(root.right);
}
}