1. 程式人生 > >判斷二叉樹是否對稱的代碼

判斷二叉樹是否對稱的代碼

元素 node 存儲 左右 對稱 head nod bool 兩個

思路:要判斷一顆二叉樹是否對稱,要判斷一下幾點,可以用遞歸來實現:

  • 判斷一顆二叉樹是不是對稱的,等價於判斷其左右子樹是不是鏡像對稱的
  • 判斷鏡對稱像即判斷對稱的位置上的元素是不是相等
  • 兩個節點A和B對稱等價於:
    • 這兩個節點上存儲的值相等
    • 節點A的左子樹節點和節點B的右子樹上的節點是對稱的
    • 節點A的右子樹節點和節點A的左子樹上的節點是對稱的
    • 看代碼:
    • class Solution {
      public:
          bool isTreeSymmertic(TreeNode *pHead1,TreeNode *pHead2)
          {
              if(pHead1==NULL&&pHead2==NULL) return
      true;//左右子樹都為空,肯定是對稱的 if(pHead1==NULL) return false;//一顆為空 if(pHead2==NULL) return false; //判斷當前值左右是否相等,判斷左子樹的左節點和右子樹的右節點,判斷左子樹的右節點和右子樹的左節點是否相等,三者缺一不可,一直遞歸 return pHead1->val==pHead2->val&&isTreeSymmertic(pHead1->left,pHead2->right)&&isTreeSymmertic(pHead1->right,pHead2->left); }
      bool isSymmetrical(TreeNode* pRoot) { if(pRoot==NULL) return true;//本身就為空肯定是對稱的 return isTreeSymmertic(pRoot->left,pRoot->right);//判斷左右子樹 } };

判斷二叉樹是否對稱的代碼