给定一个二叉树,检查是否这是一个镜子本身(即关于中心对称)。例如,
这个二进制tree <代码>[1、2、2、3、4、4、3]> 代码,是对称的:
<>之前,,,,1 ,,/\ 2,,,,,2 ,//,/\ 3,,4,4,,3
但following <代码> [1,2,2,null, 3, null, 3]> 代码,不是:
代码如下:
/* * ,* Definition for  a binary tree 节点。 ,* struct TreeNode  { ,*,,,,int val; ,*,,,,TreeNode *左; ,*,,,,TreeNode *正确; ,*,,,,TreeNode (int x),:,瓦尔(x),左(NULL),右(NULL), {} ,*}; ,*/,//思路://1。判断根是否为空,若空则返回真,否则假;//2。判断根→左,根→右是否同时为空,若为空则返回正确;//3。判断根→左,根→右同时不为空时,将根→右反转, ,//然后判断新根→右和根→左是否为相同的树。 class Solution  { 公众: ,,,bool isSameTree (TreeNode *, p, TreeNode *, q), { ,,,,,,,bool childResult; ,,,,,,,如果(==,,NULL  p ,,, NULL ==,问) ,,,,,,,,,,,return 真实; ,,,,,,,如果(,NULL !=, p ,,, NULL !=, q ,,, p→val ==,问→val) ,,,,,,,{ ,,,,,,,,,,,return childResult =, isSameTree (p→左,问→左),,,,isSameTree (p→q→右); ,,,,,,,} ,,,,,,,return 假; ,,,,,,,, ,,,} ,,,, ,,,void reverseTree (TreeNode *,根) ,,,{ ,,,,,,,如果根(!) ,,,,,,,,,,,返回; ,,,,,,,TreeNode * p, q *; ,,,,,,,p =,根→左; ,,,,,,,q =,根→正确; ,,,,,,,根→left =,问; ,,,,,,,根→right =, p; ,,,,,,,reverseTree(根→左); ,,,,,,,reverseTree(根→右); ,,,} ,,,, ,,,bool isSymmetric (TreeNode *,根),{ ,,,,,,,如果(,(==NULL 根),| |,(==,NULL 根→left ,,,, NULL ==,根→右),) ,,,,,,,,,,,return 真实; ,,,,,,,如果(NULL !=,根→left ,,, NULL !=,根→右) ,,,,,,,{ ,,,,,,,,,,,reverseTree(根→右); ,,,,,,,,,,,return isSameTree(根→根→左,右); ,,,,,,,} ,,,,,,,return 假; ,,,} };