地址 https://www.acwing.com/problem/content/description/38/node
題目描述
請實現一個函數,用來判斷一棵二叉樹是否是對稱的。算法
若是一棵二叉樹和它的鏡像同樣,那麼它是對稱的。函數
樣例spa
以下圖所示二叉樹[1,2,2,3,4,4,3,null,null,null,null,null,null,null,null]爲對稱二叉樹: 1 / \ 2 2 / \ / \ 3 4 4 3 以下圖所示二叉樹[1,2,2,null,4,4,3,null,null,null,null,null,null]不是對稱二叉樹: 1 / \ 2 2 \ / \ 4 4 3
算法1
一個是樹的遞歸遍歷 一個是比較的邊界條件要注意code
C++ 代碼blog
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool issame(TreeNode* right,TreeNode* left) { if(right == NULL && left == NULL ) return true; else if(right == NULL ) return false; else if(left == NULL) return false; if(right->val != left->val) return false; return issame(right->right,left->left) && issame(right->left,left->right); } bool isSymmetric(TreeNode* root) { if(root == NULL) return true; return issame(root->right,root->left); } }; 做者:defddr 連接:https://www.acwing.com/solution/acwing/content/3620/ 來源:AcWing 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
AC了 下一題遞歸