对称的二叉树
定义queue,res1,res2
将根节点添加到queue,根节点值添加到res1
逐层递归
res1若不对称,则返回false
否则对该层节点,
逐个判断左右节点是否为空,
若左/右节点为空,将-1添加到res1,代表为空
若左/右节点不为空,则将左/右节点添加到queue,并将root->val添加到res1中
/**
* 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 isSymmetric(TreeNode* root) {
queue<TreeNode*> q;
vector<int> res1,res2;
if(root){
q.push(root);
res1.push_back(root->val);
}
while(!q.empty()){
res2=res1;
reverse(res2.begin(),res2.end());
if(res1!=res2) return false;
res1.clear();
int size = q.size();
while(size-->0){
TreeNode* cur = q.front();
q.pop();
if(cur->left){
q.push(cur->left);
res1.push_back(cur->left->val);
}
else
res1.push_back(-1);
if(cur->right){
q.push(cur->right);
res1.push_back(cur->right->val);
}
else
res1.push_back(-1);
}
}
return true;
}
};