3道题目
层序遍历
226.翻转二叉树
101. 对称二叉树
解题理解
层序遍历
基本都可以拿模板套,这10道没什么可说的
226
这道题标明是简单题,但我一开始做还真没发现只需要把左右子树翻转以下就好,而且之前做第一遍的时候没想着用递归做,这次认真学习了以下递归发现递归效率还不错。
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(root == nullptr) return root;
swap(root->left, root->right);
invertTree(root->left);
invertTree(root->right);
return root;
}
};
101
同样是着重学习了一下递归的写法,对于递归终止条件还是掌握不到位
class Solution {
public:
bool traversal(TreeNode* left, TreeNode* right){
if(left == nullptr && right != nullptr) return false;
else if(left != nullptr && right == nullptr) return false;
else if(left == nullptr && right == nullptr) return true;
else if(left->val != right->val) return false;
bool outside = traversal(left->left, right->right);
bool inside = traversal(left->right, right->left);
bool res = outside && inside;
return res;
}
bool isSymmetric(TreeNode* root) {
if(root == nullptr) return false;
return traversal(root->left, root->right);
}
};