LeetCode NoteBook(4)—— 数据结构【二叉树&多叉树】

1.二叉树结构

//节点
struct TreeNode{
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode* () : val(0), left(nullptr), right(nullptr) {}
    TreeNode* (int x) : val(x), left(nullptr), right(nullptr) {}
    TreeNode* (int x, TreeNode* left, TreeNode* right) : val(x), left(left), right(right) {}
};

//树
TreeNode* root;

2.二叉树遍历方式

  1. 先序遍历:中左右
  2. 中序遍历:左中右
  3. 后续遍历:左右中
  4. 层序遍历:从上到下,从左至右

代码实现:

先中后:递归,迭代【栈】

层序:迭代【队列】

前序遍历

中序遍历

后续遍历


层序遍历

3.二叉树的种类

满二叉树:节点个数不是0就是2。【国际定义】【国内某些教程:子节点个数全是2。】

完全二叉树:节点从上到下,从左到右填充。

平衡二叉树:任意及节点的高度相差不超过1。【AVL,红黑树】【判定方法,中序遍历+单调】

二叉搜索树:

你可能感兴趣的:(算法的一些知识点笔记,数据结构,leetcode,二叉树)