题解 | #对称的二叉树#
对称的二叉树
https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ #include <vector> class Solution { public: bool isSymmetrical(TreeNode* pRoot) { if(!pRoot) return true; vector<TreeNode*> v; dfs(pRoot,v); for(int i=0,j=v.size()-1;i<=j;++i,--j){ if(v[i]->val!=v[j]->val||(v[i]->left==nullptr)^(v[j]->right==nullptr)||(v[i]->right==nullptr)^(v[j]->left==nullptr)) return false; } return true; //对称树中序遍历是回文的 } private: void dfs(TreeNode* pRoot,vector<TreeNode*> &v){ if(!pRoot) return; dfs(pRoot->left,v); v.push_back(pRoot); dfs(pRoot->right,v); } };