首页 > 代码库 > 对称树
对称树
闲着没事,做两道题玩玩,有一些地方还是有一些意思的;
对称树
1 ```c++ 2 bool isSymmetric(TreeNode *root) 3 { 4 //约定空树是对称的 5 if(root==NULL) 6 return true; 7 else 8 return isEqual(root->left,root->right); 9 }10 //判断是否对称,应该是有两个指针去指的,因此写一个两个指针参数的判断函数,递归的进行判断11 bool isEqual(TreeNode *a,TreeNode *b)12 {13 //当前两个结点均为空,则这一步的判断上是对称的14 if(a==NULL && b==NULL)15 return true;16 //只有一个为空,另一个不为空,显然不对称17 else if(a==NULL || b==NULL)18 return false;19 //如果当前的两个结点非空且相等,则递归的判断他们的左右-右左结点20 if(a->val == b->val)21 return isEqual(a->left,b->right)&&isEqual(a->right,b->left);22 else return false;23 }24 ```
其实对称树就是从根节点开始,用两个指针分别指针两边,然后判断是否相等(包括值相等、或者均为空),就是isEqual函数,用递归写的,也很简洁。
对称树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。