aboutsummaryrefslogtreecommitdiffstats
path: root/872/main.go
blob: 24ef0ab794c2fdb237d0ee66820cc57ab41501af (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package main

import "fmt"

type TreeNode struct {
	Val   int
	Left  *TreeNode
	Right *TreeNode
}

func preorderVisit(node *TreeNode, leafSequence *[]int) {
	if node == nil {
		return
	}
	if node.Left == nil && node.Right == nil {
		*leafSequence = append(*leafSequence, node.Val)
		return
	}

	preorderVisit(node.Left, leafSequence)
	preorderVisit(node.Right, leafSequence)
}

func leafSimilar(root1, root2 *TreeNode) bool {
	var leafSequence1 []int
	var leafSequence2 []int

	preorderVisit(root1, &leafSequence1)
	preorderVisit(root2, &leafSequence2)

	// for i := 0; i < len(leafSequence1); i++ {
	// 	fmt.Println((leafSequence1)[i])
	// }
	// for i := 0; i < len(leafSequence2); i++ {
	// 	fmt.Println((leafSequence2)[i])
	// }

	if len(leafSequence1) != len(leafSequence2) {
		return false
	}

	for i := 0; i < len(leafSequence1); i++ {
		if (leafSequence1)[i] != (leafSequence2)[i] {
			return false
		}
	}

	return true
}

func main() {
	var node1 TreeNode
	var node2 TreeNode
	var node3 TreeNode
	node1.Val = 1
	node2.Val = 2
	node3.Val = 3

	node1.Left = &node2
	node1.Right = &node3

	var node4 TreeNode
	var node5 TreeNode
	var node6 TreeNode
	node4.Val = 1
	node5.Val = 2
	node6.Val = 3

	node4.Left = &node6
	node4.Right = &node5

	fmt.Println(leafSimilar(&node1, &node4))

}