题解 | #对称的二叉树#

对称的二叉树

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

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
#include <queue>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param pRoot TreeNode类 
     * @return bool布尔型
     */
   
     
    bool isSymmetrical(TreeNode* pRoot) {
        // write code here
        if(!pRoot){
            return true;
        }
        // 采用队列方式,每次提取队列中两个节点,对比节点的值
        queue<TreeNode*> qu;
        qu.push(pRoot);
        qu.push(pRoot);
        while(!qu.empty())
        {
            TreeNode* node1 = qu.front();
            qu.pop();
            TreeNode* node2 = qu.front();
            qu.pop();
            if(!node1 || !node2){
                return false;
            }
            if(node1->val != node2->val){
                return false;
            }
            if(node1->left){
                qu.push(node1->left);
                qu.push(node2->right);
            }
            if(node1->right){
                qu.push(node1->right);
                qu.push(node2->left);
            }
        }
        return true;

    }
};

将二叉树的节点按照左右交叉顺序放入队列(左子树的左节点,右子树的右节点,左子树的有节点,右子树的左节点),每次读取两个节点,对节点的值进行对比。

全部评论

相关推荐

嗨害嗨我来了:感谢我吧,上次我在食堂敲打了一个姓雷的,他说马上给大学生们准备hc
不卡学历的大厂有哪些?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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