第十四天|层序遍历、226.翻转二叉树 (优先掌握递归)、101. 对称二叉树 (优先掌握递归)
层序遍历
题目链接:102. 二叉树的层序遍历 - 力扣(LeetCode)
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> result;queue<TreeNode*> Qu;if (root != nullptr) Qu.push(root);while (!Qu.empty()) {int Size = Qu.size();vector<int> Ve;for (int i = 0; i < Size; i++) {TreeNode* Cur = Qu.front();Qu.pop();Ve.push_back(Cur->val);if (Cur->left) Qu.push(Cur->left);if (Cur->right) Qu.push(Cur->right);}result.push_back(Ve);}return result;}
};
226.翻转二叉树
题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* invertTree(TreeNode* root) {if (root == nullptr) return root;stack<TreeNode*> St;St.push(root);while (!St.empty()) {TreeNode * cur = St.top();St.pop();swap(cur->left, cur->right);if (cur->left) St.push(cur->left);if (cur->right) St.push(cur->right);}return root;}
};
101.对称二叉树
题目链接:101. 对称二叉树 - 力扣(LeetCode)
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:bool Compare(TreeNode* left, TreeNode* right) {if (left != nullptr && right == nullptr) return false;else if (right != nullptr && left == nullptr) return false;else if (left ==nullptr && right == nullptr) return true;else if (left->val != right->val) return false;bool leftbool = Compare(left->left, right->right);bool rightbool = Compare(left->right, right->left);bool result = leftbool && rightbool;return result;}bool isSymmetric(TreeNode* root) {if (root == nullptr) return true;else return Compare(root->left, root->right);}
};