树和二叉树
1.树的基本概念
1.1树的定义
1.2树的逻辑表示方法
1.3树的基本术语
1.4树的性质
1.5树的基本运算
1.6树的存储结构
2.二叉树的概念和性质
2.1二叉树的定义
2.2二叉树的性质
2.3二叉树与树、森林之间的转换
3.二叉树的存储结构
3.1二叉树的顺序存储结构
3.2二叉树的链式存储结构
4.二叉树的基本运算及其实现
5.二叉树的遍历
5.1二叉树遍历的概念
5.2先序、中序、后序遍历递归算法
先序遍历:
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); // 中
}
5.3先序、中序、后序遍历非递归算法
5.4层次遍历算法
6.二叉树的构造
二叉树的定义:
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
以上,列了一个目录,如果你都明白了,就说明你已经对树和二叉树有一个认识和了解了。
前序:
只要搞懂了一个遍历的代码实现,其他的就模仿一下子写出。
标签:遍历,TreeNode,cur,递归,traversal,vec,二叉树 From: https://blog.csdn.net/Talking999/article/details/136819170