标签:规则 大于 asc 构造函数 实现 查找 统计 jpg rip
网上的相关教程非常多,基础知识自行搜索即可。
习题主要选自Orelly出版的《数据结构与算法javascript描述》一书。
参考代码可见:https://github.com/dashnowords/blogs/tree/master/Structure/btree
一棵树最上面的点称为根节点
,如果一个节点下面连接多个节点,那么该节点称为父节点
,下面的节点称为子节点
,二叉树的每一个节点最多有2个子节点,一个节点子节点的个数称为度
,二叉树每个节点的度只能是0,1,2中的一个,度为0的节点称为叶节点
。
二叉查找树是一种特殊的二叉树,其插入查找和删除都非常高效。
实现二叉查找树(BST)
TIP:BST
在插入数据时的逻辑,本身就是一种二分法思维。
树的遍历
TIP:树的遍历一般分为先序遍历,中序遍历,后序遍历,这里的序是指对于一个节点以及它的左子节点和右子节点的访问次序。具体使用场景的例子包括:先序遍历时,可以用于查看树结构,中序遍历,可以用于显示排序结果,后序遍历,可用于计算目录内文件占用的数据大小。
值的查找
3.1查找给定值
TIP:实际上就是二分法查找
3.2查找最小值
TIP:BST
中最左侧的节点。
3.3查找最大值
TIP:BST
中最右侧的节点。
删除节点
TIP:主要注意删除同时包含左右孩子节点的节点时逻辑,由BST
插入的规则可以知道,节点右子树中所有的节点都是大于当前节点值的,所以右子树中找出的最小值是大于当前节点左子树上所有值的,所以将其上浮至当前待删除节点位置,是不影响二叉树特性的。
计数
BST
增加一个新方法,返回BST
中节点个数。BST
增加一个新方法,返回BST
中边的个数。BST
类增加一个新方法max( )
,返回最大值。BST
类增加一个新方法min( )
,返回最小值。BST
中,显示每个单词出现的次数BST
构造函数中增加一个count
属性,在增删节点成功时修改count
值实现计数即可。BST
边的数量比节点数量少1.BST
做练习就好,词频统计更多会用到Trie
树,也就是字典树,感兴趣的读者可以自行查阅。【先序+中序】或者【后序+中序】都可以还原出唯一的二叉树,只根据【先序+后序】还原出的二叉树不是唯一的(感兴趣的可以看看这篇《 为什么只给出前序和后序,不能唯一确定一个二叉树 》),这里的二叉树指的是一般二叉树,不是二叉搜索树。或者相关的文章已经很多了,随手贴一篇带图的《由遍历序列还原二叉树结构》,理解难度并不高,同样建议自己编码实现一下。
二叉树是非常重要的数据结构,书中介绍的只是最基本的知识,更进一步的学习会涉及二叉树的数学特性,限制更多性能也更优的平衡二叉树,满二叉树,红黑树等等,以及相关的深度优先和广度优先算法,路还很长,静下心慢慢走。
标签:规则 大于 asc 构造函数 实现 查找 统计 jpg rip
原文地址:https://www.cnblogs.com/dashnowords/p/9955479.html