Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. public class Node {
  2. public int value;
  3. public Node left;
  4. public Node right;
  5. public Node peer;
  6.  
  7. public Node(int value) {
  8. this.value = value;
  9. }
  10.  
  11. public String peerMessage() {
  12. return value + "'s peer -> " + (peer != null ? peer.value : "null");
  13. }
  14. }
  15.  
  16. public Node fillChildPeers(Node node) {
  17. if (node == null) {
  18. return null;
  19. }
  20. if (node.left != null) {
  21. if (node.right != null) {
  22. node.left.peer = node.right;
  23. System.out.println(node.left.peerMessage());
  24. } else {
  25. node.left.peer = findPeerFromParentPeerThatHasChild(node);
  26. System.out.println(node.left.peerMessage());
  27. }
  28.  
  29. }
  30. if (node.right != null) {
  31. node.right.peer = findPeerFromParentPeerThatHasChild(node);
  32. System.out.println(node.right.peerMessage());
  33. }
  34.  
  35. fillChildPeers(node.left);
  36. fillChildPeers(node.right);
  37.  
  38. return node;
  39. }
  40.  
  41. public Node findPeerFromParentPeerThatHasChild(Node node) {
  42. if (node.peer == null) {
  43. return null;
  44. }
  45. if (node.peer.left != null) {
  46. return node.peer.left;
  47. }
  48. if (node.peer.right != null) {
  49. return node.peer.right;
  50. }
  51. return findPeerFromParentPeerThatHasChild(node.peer);
  52. }
  53.  
  54. /**
  55. *
  56. * (0) 1's peer -> 2
  57. * / \ 2's peer -> null
  58. * (1)--(2) 3's peer -> 4
  59. * / \ \ expected 4's peer -> 5
  60. * (3)-(4)--(5) 5's peer -> null
  61. * / \ 6's peer -> 7
  62. * (6)----------(7) 7's peer -> null
  63. * / 8's peer -> null
  64. * (8)
  65. */
  66.  
  67. @Test
  68. public void nodeTest() {
  69. Node root = new Node(0);
  70. Node one = new Node(1);
  71. Node two = new Node(2);
  72. Node three = new Node(3);
  73. Node four = new Node(4);
  74. Node five = new Node(5);
  75. Node six = new Node(6);
  76. Node seven = new Node(7);
  77. Node eight = new Node(8);
  78.  
  79. root.left = one;
  80. root.right = two;
  81. one.left = three;
  82. one.right = four;
  83. two.right = five;
  84.  
  85. three.left = six;
  86. five.right = seven;
  87. six.left = eight;
  88.  
  89. root = fillChildPeers(root);
  90. Assert.assertEquals(one.peer.value, 2);
  91. Assert.assertEquals(two.peer, null);
  92. Assert.assertEquals(three.peer.value, 4);
  93. Assert.assertEquals(four.peer.value, 5);
  94. Assert.assertEquals(five.peer, null);
  95. Assert.assertEquals(six.peer.value, 7);
  96. Assert.assertEquals(seven.peer, null);
  97. Assert.assertEquals(eight.peer, null);
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement