1.png
    算中序吧

    1. /*
    2. // Definition for a Node.
    3. class Node {
    4. public int val;
    5. public Node left;
    6. public Node right;
    7. public Node next;
    8. public Node() {}
    9. public Node(int _val) {
    10. val = _val;
    11. }
    12. public Node(int _val, Node _left, Node _right, Node _next) {
    13. val = _val;
    14. left = _left;
    15. right = _right;
    16. next = _next;
    17. }
    18. };
    19. */
    20. class Solution {
    21. public Node connect(Node root) {
    22. if (root == null){
    23. return root;
    24. }
    25. //逐层进队
    26. Queue<Node> level = new LinkedList<Node>();//这里括号别漏了
    27. level.add(root);//此时第一层进来
    28. while(!level.isEmpty()){
    29. int num = level.size();//这里如果不这样 后面使用level.size()是变化的 就会出错
    30. for(int i = 0; i < num; ++i){
    31. Node node = level.poll();
    32. if (i < num-1){
    33. node.next = level.peek();
    34. }
    35. //一种类似中序的
    36. if (node.left != null){
    37. level.add(node.left);
    38. }
    39. if (node.right != null){
    40. level.add(node.right);
    41. }
    42. }
    43. }
    44. return root;
    45. }
    46. }