今天学了二叉树方面的知识,常见的有满二叉树、完全二叉树、二叉搜索树和平衡二叉搜索树的定义,以及二叉树的两种存储方式(数组法和链表法),重点是遍历方法,包括深度和广度优先遍历,其中深度遍历中的前、中、后序遍历做了重点讲解。
二叉树的前、中、后序遍历代码如下
class Solution {
public:
void traversal(TreeNode* cur, vector<int>& vec) {
if (cur == NULL) return;
vec.push_back(cur->val); // 中
traversal(cur->left, vec); // 左
traversal(cur->right, vec); // 右
}
vector<int> preorderTraversal(TreeNode* root) {
vector<int> result;
traversal(root, result);
return result;
}
};
void traversal(TreeNode* cur, vector<int>& vec) {
if (cur == NULL) return;
traversal(cur->left, vec); // 左
vec.push_back(cur->val); // 中
traversal(cur->right, vec); // 右
}
void traversal(TreeNode* cur, vector<int>& vec) {
if (cur == NULL) return;
traversal(cur->left, vec); // 左
traversal(cur->right, vec); // 右
vec.push_back(cur->val); // 中
}