12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package main
- // // TreeNode ...
- // type TreeNode struct {
- // Val int
- // Left *TreeNode
- // Right *TreeNode
- // }
- func isSymmetricIter(lNode *TreeNode, rNode *TreeNode) bool {
- if lNode == nil || rNode == nil {
- return lNode == rNode
- }
- if lNode.Val != rNode.Val {
- return false
- }
- return isSymmetricIter(lNode.Left, rNode.Right) && isSymmetricIter(lNode.Right, rNode.Left)
- }
- /**
- * Definition for a binary tree node.
- * type TreeNode struct {
- * Val int
- * Left *TreeNode
- * Right *TreeNode
- * }
- */
- func isSymmetric(root *TreeNode) bool {
- if root == nil {
- return true
- }
- return isSymmetricIter(root.Left, root.Right)
- }
- // func main() {
- // /**
- // * 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: 1
- // * / \
- // * 2 2
- // * / \ / \
- // * 4 3 3 4
- // */
- // t2ll := TreeNode{4, nil, nil}
- // t2lr := TreeNode{3, nil, nil}
- // t2l := TreeNode{2, &t2ll, &t2lr}
- // t2rl := TreeNode{3, nil, nil}
- // t2rr := TreeNode{4, nil, nil}
- // t2r := TreeNode{2, &t2rl, &t2rr}
- // t2 := &TreeNode{1, &t2l, &t2r}
- // fmt.Println(isSymmetric(t1))
- // fmt.Println(isSymmetric(t2))
- // }
|