数据结构-树

来源:互联网 发布:python 字符串相似度 编辑:程序博客网 时间:2024/06/06 20:28

树是一种在实际编程中经常遇到的数据结构。

它的逻辑很简单:除了根节点之外每个节点只有一个父节点,根节点没有父节点

除了叶节点之外所有节点都有一个或多个子节点,叶节点没有子节点

父节点和子节点之间用指针连接


二叉树

所谓二叉树是一种特殊的结构,在二叉树中每个节点最多只有两个子节点。

在二叉树中最重要的操作莫过于遍历,即按照一定顺序访问书中的所有节点。

通常树有以下几种遍历方式:

-前序遍历:先访问根节点,再访问左子节点,最后访问右子节点

-中序遍历:先访问左子节点,再访问根节点,最后访问右子节点

-后序遍历:先访问左子节点,在访问右子节点,最后访问根节点

这三种遍历都有递归和循环两种不容的实现方法,每一种遍历的递归实现逗比循环实现要简捷很多


二叉搜索树

二叉搜索树是二叉树的特例,在二叉搜索树中,左子节点总是小于或等于根节点,而右子节点总是大于或等于根节点


堆分为最大堆和最小堆

在最大堆中根节点的值最大,在最小堆中根节点的值最小

有很多需要快速找到最大值或最小值的问题都可以用堆来解决


红黑树

红黑树是把树中的节点定义为红、黑两种颜色,并通过规则确保从根节点到叶节点的最长路径的长度不超过最短路径的两倍

在C++的STL中,set、multiset、map、multimap等数据结构都是基于红黑树实现的。


重建二叉树:

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列

{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出二叉树并输出它的头结点。


原创粉丝点击