| 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))// }
 |