难度:中等
    输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)
    B是A的子结构, 即 A中有出现和B相同的结构和节点值。
    例如:
    给定的树 A:
    3
    / \
    4 5
    / \
    1 2
    给定的树 B:

    4
    /
    1
    返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。

    示例 1:
    输入:A = [1,2,3], B = [3,1]
    输出:false
    示例 2:
    输入:A = [3,4,5,1,2], B = [4,1]
    输出:true
    限制:
    0 <= 节点个数 <= 10000

    方法:树的先序遍历+递归

    1. /**
    2. * Definition for a binary tree node.
    3. * function TreeNode(val) {
    4. * this.val = val;
    5. * this.left = this.right = null;
    6. * }
    7. */
    8. /**
    9. * @param {TreeNode} A
    10. * @param {TreeNode} B
    11. * @return {boolean}
    12. */
    13. var isSubStructure = function(A, B) {
    14. return (A!=null&&B!=null)&&(recur(A,B)||isSubStructure(A.left,B)||isSubStructure(A.right,B))
    15. };
    16. var recur = function(A,B){
    17. if(B==null) return true
    18. if(A==null||A.val!=B.val) return false
    19. return recur(A.left,B.left)&&recur(A.right,B.right)
    20. }

    参考:https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof/solution/mian-shi-ti-26-shu-de-zi-jie-gou-xian-xu-bian-li-p/