image.png

    1. function Node(value) {
    2. this.value = value;
    3. this.left = null;
    4. this.right = null;
    5. }
    6. var a1 = new Node('a');
    7. var b1 = new Node('b');
    8. var c1 = new Node('c');
    9. var d1 = new Node('d');
    10. var e1 = new Node('e');
    11. var f1 = new Node('f');
    12. var g1 = new Node('g');
    13. var h1 = new Node('h');
    14. var i1 = new Node('i');
    15. var j1 = new Node('j');
    16. var k1 = new Node('k');
    17. a1.left = b1;
    18. a1.right = c1;
    19. b1.left = d1;
    20. b1.right = e1;
    21. c1.left = f1;
    22. c1.right = g1;
    23. d1.left = h1;
    24. d1.right = i1;
    25. g1.left = j1;
    26. g1.right = k1;
    27. var a2 = new Node('a');
    28. var b2 = new Node('b');
    29. var c2 = new Node('c');
    30. var d2 = new Node('d');
    31. var e2 = new Node('e');
    32. var f2 = new Node('f');
    33. var g2 = new Node('g');
    34. var h2 = new Node('h');
    35. var i2 = new Node('i');
    36. var j2 = new Node('j');
    37. var k2 = new Node('k');
    38. a2.left = b2;
    39. a2.right = c2;
    40. b2.left = d2;
    41. b2.right = e2;
    42. c2.left = f2;
    43. c2.right = g2;
    44. d2.left = h2;
    45. d2.right = i2;
    46. g2.left = j2;
    47. g2.right = k2;
    48. function compareTree(root1, root2) {
    49. if (root1 == root2) return true; // 是同一棵树, 如果是就返回 true
    50. if ((root1 == null && root2 != null) || (root2 == null && root1 != null)) return false; // 两棵树有一颗为空就返回 false
    51. if (root1.value != root2.value) return false; // 相同位置的值不相等就返回 false
    52. var leftBool = compareTree(root1.left, root2.left); // 判断左子树是否相等
    53. var rightBool = compareTree(root1.right, root2.right); // 判断右子树是否相等
    54. return leftBool && rightBool; // 必须左右子树都相等才算相等
    55. }
    56. console.log(compareTree(a1, a2));