102. 二叉树的层序遍历
题目链接
思路
这道题的正常解法(迭代法)二刷时能做出来,bugfree,但是递归法没有掌握。
本人题解
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
//二叉树的层序遍历使用队列这种数据结构来做的
//首先定义一个队列用于遍历二叉树
queue<TreeNode*> myQue;
//其次定义一个二维数组用于返回遍历的结果
vector<vector<int>> res;
if (root == NULL) return res;
myQue.push(root);
while (!myQue.empty()) {
//定义一个int类型的变量用于记录每一层中有多少个节点
int size = myQue.size();
vector<int> num;
while (size--) {
TreeNode* node = myQue.front();
myQue.pop();
if (node->left) myQue.push(node->left);
if (node->right) myQue.push(node->right);
num.push_back(node->val);
}
res.push_back(num);
}
return res;
}
};
226. 翻转二叉树
题目链接
思路
这道题目的思路其实很简单,关于递归的解题思路自己也想到了,但是不自信 最后没做出来。。。
其实思路就可以理解为:将所有的节点的左右节点进行翻转一次就可以,所以这道题用层序遍历也是很简单。
101. 对称二叉树
思路
看了题解看懂