| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | package mainimport (	"fmt")// TreeNode ...// type TreeNode struct {// 	Val   int// 	Left  *TreeNode// 	Right *TreeNode// }/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func isSameTree(p *TreeNode, q *TreeNode) bool {	// leaf node, eq	// one of p/q is not nil, ne	if p == nil || q == nil {		return p == q	}	if p.Val != q.Val {		return false	}	// preoder traversal, DLR	return isSameTree(p.Left, q.Left) && isSameTree(p.Right, q.Right)}func test100() {	/**	 * t1:  5	 *     / \	 *    1   4	 *       / \	 *      2   3	 */	t1l := TreeNode{1, nil, nil}	t1rl := TreeNode{2, nil, nil}	t1rr := TreeNode{3, nil, nil}	t1r := TreeNode{4, &t1rl, &t1rr}	t1 := &TreeNode{5, &t1l, &t1r}	/**	 * t2: same as t1	 */	t2l := TreeNode{1, nil, nil}	t2rl := TreeNode{2, nil, nil}	t2rr := TreeNode{3, nil, nil}	t2r := TreeNode{4, &t2rl, &t2rr}	t2 := &TreeNode{5, &t2l, &t2r}	fmt.Println(isSameTree(t1, t2))}
 |