算法训练营第15天|● 层序遍历● 226.翻转二叉树 ● 101.对称二 叉树

文档讲解:代码随想录 (programmercarl.com)

视频讲解:代码随想录的个人空间-代码随想录个人主页-哔哩哔哩视频 (bilibili.com)

LeetCode 层序遍历

题目链接102. 二叉树的层序遍历 - 力扣(LeetCode)

解题思路:利用队列处理节点。

代码如下:

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        queue<TreeNode*>qe;
        if(root)qe.push(root);
        vector<vector<int>>res;
        // vector<int>line;
        while(!qe.empty()){
            // TreeNode*node=qe.front();
            int size=qe.size();
            vector<int>line;
            for(int i=0;i<size;i++){
                TreeNode*node=qe.front();
                line.push_back(node->val);
                qe.pop();
                if(node->left)qe.push(node->left);
                if(node->right)qe.push(node->right);
            }
            res.push_back(line);
        }
        return res;
    }
};

LeetCode 反转二叉树

题目链接226. 翻转二叉树 - 力扣(LeetCode)

解题代码如下(下面代码来自代码随想录 (programmercarl.com)): 

class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        if (root == NULL) return root;
        swap(root->left, root->right);  // 中
        invertTree(root->left);         // 左
        invertTree(root->right);        // 右
        return root;
    }
};

LeetCode 对称二叉树

题目链接:101. 对称二叉树 - 力扣(LeetCode)

解题代码如下:

class Solution {
public:
    bool compare(TreeNode*left,TreeNode*right){
        if(left==nullptr&&right==nullptr)return true;
        else if(left==nullptr&&right!=nullptr)return false;
        else if(left!=nullptr&&right==nullptr)return false;
        else{
            if(left->val==right->val)return compare(left->left,right->right)&&compare(left->right,right->left);else return false;        }
    }
    bool isSymmetric(TreeNode* root) {
        if(!root)return true;
        return compare(root->left,root->right);
    }
};
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值