Given the roots of two binary trees p and q, write a function to check if they are the same or not.
    Two binary trees are considered the same if they are structurally identical, and the nodes have the same value.

    給與兩個二元樹分別為 p 和 q 的根,寫一個函式來檢查它們是否相同。
    如果兩個二叉樹結構相同並且節點具有相同的值,則認為它們是相同的。
    

    Example 1:

    Input: p = [1,2,3], q = [1,2,3]
    Output: true
    

    Example 2:

    Input: p = [1,2], q = [1,null,2]
    Output: false
    

    Example 3:

    Input: p = [1,2,1], q = [1,1,2]
    Output: false
    

    solution:
    1. 建立 recursion 的遞迴函式。
    2. 如果兩個 node 皆為 null,則為 true。
    3. 如果兩個 node 其中一個為 null,則為 false。
    4. 如果兩個 node 數值不同,則為 false。
    5. 運用遞迴函式來執行左右子樹的各自比較。

    Code 1:

    /**
     * Definition for a binary tree node.
     * function TreeNode(val, left, right) {
     *     this.val = (val===undefined ? 0 : val)
     *     this.left = (left===undefined ? null : left)
     *     this.right = (right===undefined ? null : right)
     * }
     */
    class TreeNode {
      constructor(val, left = null, right = null) {
        this.val = val;
        this.left = left;
        this.right = right;
      }
    }
    
    var isSameTree = function(p, q) {
        return recursion(p, q)
    };
    
    var recursion = function (p, q) {
        //如果兩個 node 皆為 null,則為 true。
        if (!p && !q) return true;
        //如果兩個 node 其中一個為 null,則為 false。
        if (!p || !q) return false;
        //如果兩個 node 數值不同,則為 false。
        if (p.val !== q.val) return false;
    
        //運用遞迴函式來執行左右子樹的各自比較。
        return recursion(p.left, q.left) && recursion(p.right, q.right);
    }
    

    FlowChart:
    Example 1

    TreeNode {
      val: 1,
      left: TreeNode { val: 2, left: null, right: null },
      right: TreeNode { val: 3, left: null, right: null }
    }
    TreeNode {
      val: 1,
      left: TreeNode { val: 2, left: null, right: null },
      right: TreeNode { val: 3, left: null, right: null }
    }
    return true;
    

    Example 2

    TreeNode {
      val: 1,
      left: TreeNode { val: 2, left: null, right: null },
      right: null
    }
    TreeNode {
      val: 1,
      left: TreeNode {
        val: null,
        left: TreeNode { val: 2, left: null, right: null },
        right: null
      },
      right: null
    }
    return false;
    

    Example 3

    TreeNode {
      val: 1,
      left: TreeNode { val: 2, left: null, right: null },
      right: TreeNode { val: 1, left: null, right: null }
    }
    TreeNode {
      val: 1,
      left: TreeNode { val: 1, left: null, right: null },
      right: TreeNode { val: 2, left: null, right: null }
    }
    return false;