/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */classSolution{publicbooleanisSubStructure(TreeNodeA,TreeNodeB){if(A==null||B==null){returnfalse;}returndfs(A,B)||isSubStructure(A.left,B)||isSubStructure(A.right,B);}privatebooleandfs(TreeNodeA,TreeNodeB){if(B==null){returntrue;}if(A==null||A.val!=B.val){returnfalse;}returndfs(A.left,B.left)&&dfs(A.right,B.right);}}
1 2 3 4 5 6 7 8 910111213141516171819202122
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */classSolution{public:boolisSubStructure(TreeNode*A,TreeNode*B){if(!A||!B)return0;returndfs(A,B)||isSubStructure(A->left,B)||isSubStructure(A->right,B);}booldfs(TreeNode*A,TreeNode*B){if(!B)return1;if(!A||A->val!=B->val)return0;returndfs(A->left,B->left)&&dfs(A->right,B->right);}};
1 2 3 4 5 6 7 8 9101112131415161718192021222324
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */funcisSubStructure(A*TreeNode,B*TreeNode)bool{vardfsfunc(A,B*TreeNode)booldfs=func(A,B*TreeNode)bool{ifB==nil{returntrue}ifA==nil||A.Val!=B.Val{returnfalse}returndfs(A.Left,B.Left)&&dfs(A.Right,B.Right)}ifA==nil||B==nil{returnfalse}returndfs(A,B)||isSubStructure(A.Left,B)||isSubStructure(A.Right,B)}
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode right; * public TreeNode(int x) { val = x; } * } */publicclassSolution{publicboolIsSubStructure(TreeNodeA,TreeNodeB){if(A==null||B==null){returnfalse;}returndfs(A,B)||IsSubStructure(A.left,B)||IsSubStructure(A.right,B);}publicbooldfs(TreeNodeA,TreeNodeB){if(B==null){returntrue;}if(A==null||A.val!=B.val){returnfalse;}returndfs(A.left,B.left)&&dfs(A.right,B.right);}}