当前位置:   article > 正文

C语言:对称二叉树_对称二叉树c语言

对称二叉树c语言
  1. // 二叉树结构
  2. //struct TreeNode {
  3. // int val;
  4. // struct TreeNode *left;
  5. // struct TreeNode *right;
  6. // };
  7. //判断二叉树是否对称,基本思路:递归遍历,一棵树采用根左右,一棵树采用根右左,
  8. //每次进去判断根节点值是否相等;判断标志sign的值,
  9. //先假设是对称的,遍历是一旦发现不对称,直接让它为0;
  10. void isSameTree1(struct TreeNode* p, struct TreeNode* q,int *sign){
  11. if(p!=NULL&&q!=NULL){//两个指针均不为空,下面的->val才能有意义
  12. if(p->val!=q->val){
  13. *sign=0;
  14. }else{
  15. isSameTree1(p->left,q->right,sign);//p的遍历为根左右,q的遍历为根右左;
  16. isSameTree1(p->right,q->left,sign);
  17. }
  18. }else if(p!=NULL||q!=NULL){//保证一个空,另一个不空 的不符情况 不漏;
  19. *sign=0;
  20. }
  21. }
  22. int isSameTree(struct TreeNode* p, struct TreeNode* q){
  23. int sign=1;//初始化sign,假设它是对称的;
  24. isSameTree1(p,q,&sign);//递归过程中可能会改变sign的值,所以需要传sign的地址进去;
  25. return sign;
  26. }
  27. bool isSymmetric(struct TreeNode* root){
  28. if(root==NULL){//根不为NULL,指向结构成员时才有意义;
  29. return true;
  30. }else {
  31. int i=isSameTree(root->left,root->right);//用sign的返回值判断是否对称;
  32. if(i==1){
  33. return true;
  34. }else{
  35. return false;
  36. }
  37. }
  38. }

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号