123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package main
- import (
- "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))
- }
|