二叉树

来源:互联网 发布:ai作图软件 编辑:程序博客网 时间:2024/06/05 00:24
树同时具有有序数组和链表的优点,查找数据项的速度和在有序数组中查找一样快,插入和删除数据项的速度和链表一样快。
路径:引用
节点:实体
关键字:数据域,用于查询或其他操作
父节点,子节点,叶节点,子树,访问,遍历,层
二叉搜索树:一个节点的左子节点的关键字值小于这个节点,右子节点关键字值大于或等于这个父节点。
非平衡树:大部分节点在根的一边或者另一边。原因是由数据项插入的顺序造成的,若关键字值随机插入,树可能会更平衡一点。
  • Node类,节点对象的类。关键字值,存储内容,左右子节点的引用,显示节点数据。
  • Tree类,树本身的类,实例化的对象含所有的节点。表示根的Node变量,查询,插入,删除节点,遍历,显示等操作。
  • TreeApp类,操作树的类,示例。创建树,插入,查询节点。
查找节点:从根节点开始,判断节点关键字值,返回。时间复杂度:O(logN)
插入节点:从根开始查找一个相应的节点,将是新节点的父节点,然后根据关键字值判断左右节点。

遍历树:根据一种特定顺序访问树的每一个节点。递归方法遍历,用节点作为参数。
  • 前序:中,左,右
  • 中序:左,中,右
  • 后序:左,右,中
查找最值:一般在最左或最右节点。
删除节点:
  • 删除没有子节点的节点
  • 删除有一个子节点的节点,把该节点与父节点断开,并将其子节点直接连在父节点上
  • 删除有两个子节点的节点,用中继后序
二叉树的效率:层数和节点数,1,2,3,4,5=1,3,7,15,31   log2(N+1),以2为底N+1对数
上面是用引用表示,还可以用数组表示树,树中的每个位置在数组中对应一个位置,无论是否存在节点,这种方式在删除节点移动子树时很费时。
哈夫曼编码Huffman:使用二叉树压缩数据。

0 0
原创粉丝点击