From f8927024bc8f38adf0be1ec56042456170115d4f Mon Sep 17 00:00:00 2001 From: marat Date: Mon, 8 Aug 2022 20:08:59 +0200 Subject: [PATCH] Go: 572. Subtree of Another Tree --- go/572-Subtree-of-Another-Tree.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 go/572-Subtree-of-Another-Tree.go diff --git a/go/572-Subtree-of-Another-Tree.go b/go/572-Subtree-of-Another-Tree.go new file mode 100644 index 000000000..b758dc170 --- /dev/null +++ b/go/572-Subtree-of-Another-Tree.go @@ -0,0 +1,27 @@ +/** + * Definition for a binary tree node. + * type TreeNode struct { + * Val int + * Left *TreeNode + * Right *TreeNode + * } + */ +func isSubtree(root *TreeNode, subRoot *TreeNode) bool { + if root == nil { + return false + } + + return equals(root, subRoot) || isSubtree(root.Left, subRoot) || isSubtree(root.Right, subRoot) +} + +func equals(s *TreeNode, t *TreeNode) bool { + if s == nil && t == nil { + return true + } + + if s == nil || t == nil || s.Val != t.Val { + return false + } + + return equals(s.Left, t.Left) && equals(s.Right, t.Right) +} \ No newline at end of file