数据结构--二叉树
来源:互联网 发布:两组数据相似性分析 编辑:程序博客网 时间:2024/05/21 18:38
1. 树基本概念:
- 根节点(root)、叶节点(leaf)、儿子(child)、父亲(parent)、兄弟(sibling)、祖父(grandparent)、孙子(grandchild)、边(edge)、路径(path)
- 路径的长(length):路径上边的条数。
- 祖先(ancestor)和后裔(descendant):存在节点a到节点b的一条路径a –> b,则a是b的祖先,b是a的后裔。
- 真祖先(proper ancestor)和真后裔(proper descendant):a != b且存在节点a到节点b的一条路径a –> b,则a是b的真祖先,b是a的真后裔。
- 节点的深度(depth):节点a的深度为从根节点到a节点的唯一路径(path)的长。根节点的深度是0。需要注意的是路径的长,不是节点的个数。
- 节点的高度(height):节点a的高度是节点a到一片树叶(只能往下看,不能回溯)的最长路径的长。所有叶节点的height都是0。同样的,定义的是路径的长,不是节点的个数。
2. 二叉树的定义及遍历
struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x): val(x), left(NULL),right(NULL) {}};
3. 二叉树的遍历
3.1. 二叉树的前序遍历(深度优先遍历DFS)
遍历顺序:父节点 –> 左孩子 –> 右孩子
实现细节见我之前写的LeetCode题解,里面有详细解答,包括递归实现、迭代实现、线索二叉树实现。
[LeetCode]144. Binary Tree Preorder Traversal–二叉树前序遍历
3.2. 二叉树的中序遍历(深度优先遍历DFS)
遍历顺序:左孩子 –> 父节点 –> 右孩子
实现细节见我之前写的LeetCode题解
[LeetCode]94. Binary Tree Inorder Traversal–二叉树的中序遍历
3.3. 二叉树的后序遍历(深度优先遍历DFS)
遍历顺序:左孩子 –> 右孩子 –> 父节点
实现细节见我之前写的LeetCode题解
[LeetCode]145. Binary Tree Postorder Traversal–二叉树的后序遍历
3.4. 二叉树的层序遍历(宽度优先遍历WFS)
[LeetCode]102. Binary Tree Level Order Traversal–二叉树层序遍历1
[LeetCode]107. Binary Tree Level Order Traversal II–二叉树层序遍历2
[LeetCode]103. Binary Tree Zigzag Level Order Traversal–二叉树之字形遍历
3.5. 表达式树
表达式树(expression tree):表达式树的树叶是操作数(operand),比如常量或变量;其他的节点为操作符(operator)。
根据不同的遍历顺产生不同的表达式。
前缀表达式(前序遍历):++a*bc*+*defg
中缀表达式(中序遍历):a+b*c+d*e+f*g
后缀表达式(后序遍历):abc*+de*f+g*+
后缀表达式也叫逆波兰表达式。
- Evaluate Reverse Polish Notation
4. 二叉搜索树/二叉查找树(Binary Search Tree)的定义
5. 二叉搜索树/二叉查找树的基本操作:
5.1. 清空:make_empty
5.2. 插入:insert
5.3. 查找:find
5.4. 查找最小元素:find_min
5.5. 查找最大元素:find_max
5.6. 删除:delete
5.7. 时间复杂度/空间复杂度的分析
6. AVL树定义
6.1 单旋转
6.2 双旋转
7. 伸展树
8. B-树
阅读全文
0 0
- 数据结构-树-二叉树
- 数据结构::树,二叉树
- 数据结构-二叉树
- 二叉树的数据结构
- 数据结构-二叉树算法
- java数据结构:二叉树
- 数据结构---二叉树
- 数据结构(C++)--二叉树
- JAVA 数据结构 二叉树
- 数据结构-二叉树 问题
- 转贴:数据结构:二叉树
- 二叉树(数据结构 c++)
- 数据结构-二叉树操作
- java数据结构----二叉树
- 数据结构二叉树
- 数据结构中的二叉树
- 数据结构--二叉树
- 数据结构二叉搜索树
- 解决如source insight等软件由于编码格式不一样出现中文乱码显示问题
- android.intent.action.MAIN 与 android.intent.category.LAUNCHER
- DELETE操作出现:ORA-30036: 无法按 1024 扩展段 (在撤消表空间 'UNDOTBS_1' 中)
- Aggressive cows POJ
- Jfinal 连接Sqlserver 数据库
- 数据结构--二叉树
- Javascript 中 include 文件
- 深入分析单例模式
- POJ 2689 Prime Distance
- Django进阶
- xposed的总开关
- 神经网络系列讲解之离散型Hopfield网络
- LeetCode-70-Climbing Stairs(爬楼梯)
- java-static和final