树
特点
- 结构直观
- 一棵树满足某种性质往往要求每个结点都满足
常考形状
- 普通二叉树
- 平衡二叉树
- 完全二叉树
- 二叉搜索树
- 四叉树
- 多叉树
- 红黑树、自平衡二叉搜索树(意向职位需要使用时会考)
遍历操作及其应用场景
- 前序遍历(根左右):树里搜索、创建一棵新树
- 中序遍历(左根右):二叉搜索树
- 后序遍历(左右中):对某节点进行分析时需要用到左子树和右子树的信息,即搜索信息时候从树的底部开始,就像修剪一棵树时,从叶子向根修剪
例题
力扣230
思路:如上文所说,利用中序遍历二叉搜索树可以得到结点有序序列这一特性,先中序遍历二叉搜索树,然后找到对应节点的值即可
class Solution {
public:
vector<int> inorder(TreeNode* root,vector<int>& vi){
if(root==NULL)
return vi;
inorder(root->left,vi);
vi.push_back(root->val);
inorder(root->right,vi);
return vi;
}
int kthSmallest(TreeNode* root, int k) {
vector<int>vi;
inorder(root,vi);
return vi[k-1];
}
};