博客专栏  >  编程语言   >  二叉树——递归与非递归

二叉树——递归与非递归

在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。

关注
1 已关注
17篇博文
  • 平衡二叉树——红黑树

    “test.cpp” #include using namespace std; enum COLOUR { BLACK, RED, }; template struct RBTreeNod...

    2016-10-30 21:23
    248
  • 360面试题——搜索二叉树转换成有序的双向链表

    360面试题——(不允许创建新的节点)搜索二叉树转换成有序的双向链表 这道题有两种思路,一种是创建节点,中序遍历搜索二叉树,然后链表尾插。第二种是线索化二叉树的思想(思路二才是符合题目要求的) ...

    2016-10-09 16:46
    387
  • 高度平衡的二叉树——AVLTree

    旋转图解在代码的后头 AVL树本质上还是一棵二叉搜索树(因此读者可以看到我后面的代码是继承自二叉搜索树的),它的特点是: 1. 本身首先是一棵二叉搜索树。 2. 带有平衡条件:每个结点的左右子树的高...

    2016-07-22 16:13
    221
  • 高效的平衡搜索树——红黑树

    红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求: 性质1. 节点是红色或黑色。 性质2. 根节点是黑色。 ...

    2016-07-24 23:53
    847
  • 数据结构——线索化二叉树

    将二叉树变为线索二叉树的过程称为线索化。 按某种次序将二叉树线索化的实质是:按该次序遍历二叉树,在遍历过程中用线索取代空指针。 算法根据二叉树遍历的方式而定。只需要将遍历算法中访问结点的操作具体化为建...

    2016-07-29 14:14
    170
  • 适用于外查找的平衡树——B树

    什么是B树:         1970年,R.Bayer和E.mccreight提出了一种适用于外查找的树,它是一种平衡的多叉树,称为B树(或B-树、B_树)。在B-树中查找给定关键字的方法是,首先...

    2016-08-02 23:44
    385
  • 数据结构——实现最大堆

    什么是堆: 堆数据结构是一种数组对象,它可以被视为一科完全二叉树结构。它的特点是父节点的值大于(小于)两个子节点的值(分别称为大顶堆和小顶堆)。它常用于管理算法执行过程中的信息,应用场景包括堆排...

    2016-08-05 18:08
    276
  • 实现大堆小堆——仿函数的应用

    仿函数:就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。 “Test.cpp” #define _CRT_SECUR...

    2016-08-06 10:46
    234
  • 堆的应用——在N个数中找到最大的前K个数

    在堆的应用中,有一道很经典的面试题,题目是:“在100w个数中找到最大的100个数”。对于堆的相关知识和堆实现的代码在我的前2前博客中都有详解,对于这道题会有很大的帮助。         让我们来剖析...

    2016-08-18 12:20
    216
  • 遍历二叉树——递归遍历

    “test.cpp” #include using namespace std; template struct BinaryTreeNode { T _data; BinaryTreeNod...

    2016-09-26 23:03
    786
  • 遍历二叉树——非递归遍历

    “test.cpp” #include using namespace std; #include #include template struct BinaryTreeNode { T _da...

    2016-09-28 14:14
    424
  • 线索化二叉树

    “test.cpp” #include using namespace std; #include enum Tag { THREAD, LINK, }; template struct B...

    2016-10-01 14:22
    371
  • 数据结构——排序/搜索二叉树(非递归)的基本操作实现

    什么是搜索二叉树:       二叉树(binary)是一种特殊的树。二叉树的每个节点最多只能有2个子节点:由于二叉树的子节点数目确定,所以可以直接采用上图方式在内存中实现。每个节点有一个左子节点(...

    2016-07-02 22:28
    318
  • 数据结构——排序/搜索二叉树(递归)的基本操作实现

    下面是用C++语言递归的实现的二叉搜索树,并有搜索,插入,删除,寻找最大最小节点的操作。 非递归实现请看我的上一篇博客 "BSTreeR.h" #pragma once template clas...

    2016-07-03 11:36
    389
  • 遍历二叉树——递归和非递归(栈和队列的应用)实现

    "BinaryTree.h" #pragma once #include #include template class BinaryTreeNode { public: T...

    2016-07-06 14:24
    441
  • 遍历二叉树——递归实现

    二叉树是面试官经常考的面试题,只要熟悉了二叉树的结构,就能很轻松的对付各种问题

    2016-07-03 14:06
    244
  • 数字三角形——递归求解

    一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路 径,把路径上面的数加起来可以得到一个和,和最大的路径称为最佳路径。任务就是求 出最佳路径上的数字之和。 注意:路径上的每一步只能从...

    2016-07-06 13:19
    899
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部