微信网站建设需要那些资料,联盟网,网站怎么接入百度地图,做网站必须要有前台吗输入两棵二叉树A和B#xff0c;判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构#xff0c; 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A:3/ \4 5/ \1 2给定的树 B#xff1a;4 /
1返回 true#xff0c;因为 B 与 A 的一个子树拥有相… 输入两棵二叉树A和B判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A:3/ \4 5/ \1 2给定的树 B4 /
1返回 true因为 B 与 A 的一个子树拥有相同的结构和节点值。 示例 1 输入A [1,2,3], B [3,1] 输出false 示例 2 输入A [3,4,5,1,2], B [4,1] 输出true 首先这里不确定的就是如果结果为 true那么 A 中哪个节点为 B 的头结点。既然不确定那么就遍历树 A然后判断每个节点是否就是 B 的头结点或者说以 A 此时节点为头结点是否包含 B。判断 B 是否为给定头节点的树的子树那么只需要递归判断每个节点即可。当 B 结点为 null 说明比较完了都没啥问题那自然返回 true而如果 A 都被比较完了 B 还有剩下的节点还没判断那肯定返回 false或者 A B 此时的结点的值不同那也返回 false否则继续比较左右节点。 // 递归遍历树 Apublic boolean isSubStructure(TreeNode A, TreeNode B) {return (A!null B!null) (dfs(A,B) || isSubStructure(A.left,B) || isSubStructure(A.right,B));}public boolean dfs(TreeNode A,TreeNode B){if(B null)return true;if(A null || A.val ! B.val)return false;return dfs(A.left,B.left) dfs(A.right,B.right);}