题解 | #对称的二叉树#

对称的二叉树

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);
    }
};

全部评论

相关推荐

07-25 10:31
门头沟学院 Java
求问各位大佬,笔试都考点啥
投递科大讯飞等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务