当前课程知识点:数据结构(上) > 第五章 二叉树 > (d)二叉树实现 > 05D-2 BinNode接口
这里我们首先对BinNode模版类的
几个常用的接口做一具体的介绍
首先是insertAsLC这个接口
也就是说
我们要对传入的参数e进行封装
使之成为一个新的节点
并且将它作为当前节点的左孩子
接入所属的这棵树中
当然作为入口条件 我们可以假设
当前节点的左孩子现在是空的
我们可以看到
这个功能的实现方法是
首先我们可以通过
BinNode构造方法
创建一个新的BinNode节点
这个节点的data域就是e
而它的父节点呢
就是this 也就是当前这个节点
从这个图来看
就相当于我们在这里生成了一个
新的BinNode节点
同时将它的parent引用指向我们
当前的这个节点
当然这还不够
这只是自下而上一个方向的连接
为了保证整体的一致性
我们还需要相应地完成
自上而下的连接
也就是令当前这个节点的左孩子引用
能够正确地指向新创建的这个节点
我们知道新创建的这个节点
本身返回的就是一个位置
一个position
因此完成这样一种自上而下的
连接的最简洁的方法
莫过于直接用这个新生成的链接
赋予当前节点的lChild引用
也就是完成一次这个方向的赋值
好 当然insertAsRC接口
实现的方式完全对称
只需相应地将左孩子引用
替换为右孩子引用
我们再来看BinNode的size()接口
也就是返回包括当前节点在内
所有后代的总数
可以看到这是一种递归的实现方式
也就是说 我们总是递归地去
统计当前节点的左孩子
其实也就是它对应的
那个左子树的size()
以及对称地 当前节点的右孩子
所对应的那棵子树的规模
两项合计再加上当前节点自身
就是以当前节点为根的
这棵子树的规模
就运行时间而言
无论是左孩子接入 还是右孩子接入
都可以在常数时间内完成
而统计子树规模的size接口
必须遍历其中的所有的节点
所以我们说它需要O(n)线性的时间
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)计算
--演示
--(a)计算--作业
-(b)计算模型
-(b)计算模型--作业
-(c)大O记号
-(c)大O记号--作业
-(d)算法分析
-(d)算法分析--作业
-(e)迭代与递归
-(e)迭代与递归--作业
-(xc)动态规划
-- 演示
-(xc)动态规划--作业
-本章测验--作业
-(a)接口与实现
--02A-5 复制
-(a)接口与实现--作业
-(b)可扩充向量
-(b)可扩充向量--作业
-(c)无序向量
--02C-1 概述
--02C-3 插入
--02C-6 查找
--02C-8 遍历
-(c)无序向量--作业
-(d1)有序向量:唯一化
-(d1)有序向量:唯一化--作业
-(d2)有序向量:二分查找
-(d2)有序向量:二分查找--作业
-(d3)有序向量:Fibonacci查找
-(d3)有序向量:Fibonacci查找--作业
-(d4)有序向量:二分查找(改进)
-(d4)有序向量:二分查找(改进)--作业
-(d5)有序向量:插值查找
-第二章 向量(下)--(d5)有序向量:插值查找
-(e)起泡排序
--02E-2 改进
--02E-3 反例
-(e)起泡排序--作业
-(f)归并排序
-(f)归并排序--作业
-本章测验--作业
-(a)接口与实现
--03A-4 实现
-(a)接口与实现--作业
-(b)无序列表
--03B-2 查找
-(b)无序列表--作业
-(c)有序列表
--03C-3 查找
-(c)有序列表--作业
-(d)选择排序
--03D-1 构思
--03D-2 实例
--03D-3 实现
--03D-4 推敲
--03D-6 性能
-(d)选择排序--作业
-(e)插入排序
--03E-1 经验
--03E-2 构思
--03E-3 对比
--03E-4 实例
--03E-5 实现
-(e)插入排序--作业
-(xd)习题辅导:LightHouse
-本章测验--作业
- (a)栈接口与实现
--04A-1 栈
--04A-2 实例
--04A-3 实现
- (a)栈接口与实现--作业
-(c1)栈应用:进制转换
-第四章 栈与队列--(c1)栈应用:进制转换
-(c2)栈应用:括号匹配
-(c2)栈应用:括号匹配--作业
-(c3)栈应用:栈混洗
-第四章 栈与队列--(c3)栈应用:栈混洗
-(c4)栈应用:中缀表达式求值
-(c4)栈应用:中缀表达式求值--作业
-(c5)栈应用:逆波兰表达式
-第四章 栈与队列--(c5)栈应用:逆波兰表达式
-(d)队列接口与实现
--04D-1 接口
--04D-2 实例
--04D-3 实现
-第四章 栈与队列--本章测验
-(a)树
--05A-1 动机
--05A-2 应用
-(a)树--作业
-(b)树的表示
--05B-2 父亲
--05B-3 孩子
-第五章 二叉树--(b)树的表示
-(c)二叉树
-(c)二叉树--作业
-(d)二叉树实现
-(d)二叉树实现--作业
-(e1)先序遍历
-(e1)先序遍历--作业
-(e2)中序遍历
-第五章 二叉树--(e2)中序遍历
-(e4)层次遍历
-第五章 二叉树--(e4)层次遍历
-(e5)重构
-(e5)重构--作业
-本章测验--作业
-(a)概述
-(a)概述--作业
-(b1)邻接矩阵
-(b1)邻接矩阵--作业
-(c)广度优先搜索
--06C-2 策略
--06C-3 实现
--06C-5 实例
-(c)广度优先搜索--作业
-(d)深度优先搜索
--06D-1 算法
--06D-2 框架
--06D-3 细节
-(d)深度优先搜索--作业
-第六章 图--本章测验