剑指 Offer 26. 树的子结构
题目链接:https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof/
本文采用JavaScript进行解题:一、递归
一、递归
观赏点:1、将需要额外递归的部分划分为独立的函数;2、递归函数的返回值
1 /** 2 * @param {TreeNode} A 3 * @param {TreeNode} B 4 * @return {boolean} 5 * A为null时,返回false; 6 * B为null时,返回false;(空树不是任意一个树的子结构) 7 * 遍历A树的结点,以当前结点为根的子树使之与B树做对比; 8 * 一次成功即返回true,否则继续遍历A树,直至遍历完叶子结点。 9 * 10 * 两树的比较函数compare: 11 * 递归深度遍历A、B两树结点, 12 * B树被遍历完,返回true, 13 * 当前结点值若不等,返回false 14 * 左子结点、右子结点均相等时,返回true 15 */ 16 var isSubStructure = function (A, B) { 17 if (A == null || B == null) return false; 18 return compare(A, B) || isSubStructure(A.left, B) || isSubStructure(A.right, B); 19 }; 20 let compare = function(A, B) { 21 if(B == null) return true; 22 if(A == null || A.val != B.val) return false; 23 return compare(A.left, B.left) && compare(A.right, B.right); 24 }