题解 | #JZ28 对称的二叉树#

对称的二叉树

http://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb

//使用两个向量分别存储根节点->左节点->右节点和根节点->右节点->左节点的层遍历,如果相同则对称
/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:
    bool isSymmetrical(TreeNode* pRoot) {
        vector<TreeNode*> lrvec, rlvec;
        
        //根左右的层遍历存储,空子节点也要存储
        lrvec.push_back(pRoot);
        for (int i=0; i<lrvec.size(); ++i) {
            TreeNode *node = lrvec[i];
            if (node) {
                lrvec.push_back(node->left);
                lrvec.push_back(node->right);
            }
        }
        
        //根右左层遍历存储,空子节点也要存储
        rlvec.push_back(pRoot);
        for (int i=0; i<rlvec.size(); ++i) {
            TreeNode *node = rlvec[i];
            if (node) {
                rlvec.push_back(node->right);
                rlvec.push_back(node->left);
            }
        }
        
        //比较两种遍历方式的结果是否相同
        for (int i=0; i<lrvec.size(); ++i) {
            TreeNode *l = lrvec[i], *r = rlvec[i];
            if (l == nullptr || r == nullptr) {
                if (l != r) return false;
            } else if (l->val != r->val) {
                return false;
            }
        }
        
        return true;
    }
};
全部评论

相关推荐

07-04 16:00
门头沟学院 Java
点赞 评论 收藏
分享
爱睡觉的冰箱哥:学历不够啊兄弟,分析师都是9硕✌🏻咱搞不过他们滴
点赞 评论 收藏
分享
06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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