数据结构-二叉树
为什么使用二叉树
结合了另外两种数据结构的优点
- 有序数组-在树中查找数据项的速度在和有序数组中查找一样快
- 链表-插入和删除数据项也和链表一样快
树的结构
节点Node.java
树骨架Tree.java
1.插入方法
代码
2.插入方法
代码
3.中序,前序,后序遍历
代码
输出
1 2 3 4 5 6 7 8 9 10 11 12 15 16 中序
5 1 2 3 4 6 7 8 9 10 11 12 15 16 前序
1 2 3 4 6 7 8 9 10 11 12 15 16 5 后序
4.删除目标节点
有多少子节点 | 删除步骤 |
---|---|
无子节点 | 直接删除该节点即可 |
一个子节点 | 判断删除节点的子节点剩下的是左还是右,然后把删除的子节点挂到父节点的左或者右节点 |
两个子节点 | 1.找后继节点(继承被删除节点的位置),默认是删除节点的右节点 |
2.找新后继节点-循环遍历默认后继节点的左节点 | |
3.交换后继节点和删除节点的位置,后继节点的左节点变为null,删除节点的右节点变为删除节点的右节点 |
寻找要删除的节点代码
1.删除节点无子节点时
|
|
2.删除节点有一个子节点时
|
|
3.删除节点有两个子节点时
删除逻辑
获取后继节点逻辑 后继节点的右节点变为删除节点的右节点,并且和删除节点调换位置
注:该内容为Java数据结构和算法读后学习感悟