请你好 - 这是我的第一个问题 . = P

基本上作为夏季项目,我一直在浏览wikipedia page上的数据结构列表并尝试实现它们 . 我上学期参加了一门C课程并发现它非常有趣,作为我实施二项式堆的最后一个项目 - 这也非常有趣 . 也许我很讨厌,但我喜欢数据结构 .

无论如何,足够的背景故事 . 项目进展顺利,我从二叉树开始 . 为了更进一步,我需要创建迭代器来遍历树 . 我已经决定为每个遍历方法(常规迭代器和常量迭代器)创建两种类型的迭代器,我只是不知道如何做到这一点 . 我听说从stl的迭代器继承,甚至使用boosts iterator_facade(这似乎是个不错的选择)

我还没有尝试编写迭代器代码,因为我不知道从哪里开始,但我确实在github上有我当前的代码 . 你可以看一下here .

如果你反对github,我会粘贴相关的类定义 . 这些功能的实现实际上没有任何帮助,但如果您出于某种原因需要它们,请告诉我 . 此外,节点类具有用于迭代目的的父指针 .

#ifndef __TREES_HXX

#define __TREES_HXX

#include // For NULL

#include // for std::max

// Node class definition. These nodes are to be used for any

// tree where the structure is

// node

// /\

// left right

// /\ /\

//

// etc., basically two children.

template

class Node

{

public:

T data_;

Node* left_;

Node* right_;

Node* parent_; // Needed for iterators

explicit Node(T const&);

Node(Node const&);

};

template

class BinaryTree

{

protected:

typedef Node* node_t;

size_t tree_size;

public:

typedef T value_type;

explicit BinaryTree();

explicit BinaryTree(T const&);

~BinaryTree();

virtual node_t insert(node_t&, T) = 0;

virtual T& lookup(node_t const&, T const&) const = 0;

inline virtual size_t size() const;

inline virtual size_t depth(node_t const&) const;

inline bool empty() const;

inline void clear(node_t);

node_t root;

};

这是我们抽象类的基本二叉树扩展,基本上它(将是)一个BST . 有关我需要迭代器的原因的示例,请查看查找函数的定义 . 它应该将迭代器返回到找到东西的节点 .

/* Implementation of our Binary Tree is in

* this file. The node class is in Trees.hxx

* because it's intended to be a general class.

*/

#ifndef __BINARY_TREE_HXX

#define __BINARY_TREE_HXX

#include "Trees.hxx"

template

class BiTree : public BinaryTree

{

private:

typedef typename BinaryTree::node_t node_t;

public:

typedef typename BinaryTree::value_type value_type;

BiTree() : BinaryTree()

{

}

BiTree(T const& data) : BinaryTree(data)

{

}

node_t insert(node_t&, T);

T& lookup(node_t const&, T const&) const; // Note: This should return an iterator to the node where the stuff is found

};

我想就是这样 - 谢谢你的时间!如果您需要其他信息,请告诉我们 .

java 二叉树迭代器_C,为二叉树实现自定义迭代器(长)相关推荐

  1. java自定义迭代器作用_Java实现的自定义迭代器功能示例

    本文实例讲述了Java实现的自定义迭代器功能.分享给大家供大家参考,具体如下: 编写自己的Iterator,实现Iterator接口,这里多说一句,实现Iterable后,可以用"forea ...

  2. Lua⭐️迭代器pairs、ipairs ; 自定义迭代器

    迭代器pairs.ipairs array={"lua","c#","c"} --pairs可以遍历所有的键值对,即使其中key不连续 fo ...

  3. java 树面试题_java——二叉树面试题

    1 2 importjava.util.ArrayList;3 importjava.util.Iterator;4 importjava.util.LinkedList;5 importjava.u ...

  4. java 二叉树特点_疯狂java笔记之树和二叉树

    树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定义和基本术语 计算机世界里的树,是从自然界中实际的树抽象而来的,它指的是N个有父子关系 ...

  5. Java的数据结构之路——二叉树(代码实现)

    二叉树(Binary tree)是树形结构的一个重要类型.许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特 ...

  6. java层次遍历建立二叉树_java层次遍历二叉树

    思路很简单.通过队列,先将头结点放入队列,再遍历每个节点的左节点和右节点. import java.util.ArrayList; import java.util.LinkedList; /** * ...

  7. java二叉树算法_java构建二叉树算法

    展开全部 //********************************************************************************************* ...

  8. 【Java数据结构】顺序存储的二叉树

    顺序存储的二叉树 二叉树数据结构 二叉树的遍历 先序遍历 中序遍历 后序遍历 二叉树示例完整代码 二叉树类 ArrayBinaryTree 测试类 TestArrayBinaryTree 二叉树数据结 ...

  9. Java实现 LeetCode 226 翻转二叉树

    226. 翻转二叉树 翻转一棵二叉树. 示例: 输入: 4/ \2 7/ \ / \ 1 3 6 9 输出: 4/ \7 2/ \ / \ 9 6 3 1 备注: 这个问题是受到 Max Howell ...

最新文章

  1. Spark之数据倾斜 --采样分而治之解决方案
  2. 详解 如何在 windows 7添加启动项 ,强大的计划任务功能
  3. 又快又简单的sql2005分页存储过程
  4. 笔记本电脑建wifi
  5. java中的抽象方法_Java中的抽象类和抽象方法
  6. C/C++中使用的正则表达式库
  7. “表达式必须包含 bool 类型(或可转换为 bool)”
  8. 【深度学习】CNN模型的可视化-1
  9. STM32F429HAL库ADCDMA学习笔记
  10. zabbix 代理报错
  11. 美图秀秀计算机教程,美图秀秀怎么抠图 美图秀秀抠图详细教程
  12. 在YUI3下打印Panel内容
  13. Qt-QThread
  14. 新建计算机管理员账户,Win10如何新建本地管理员账户
  15. Java代码-List集合求交集、补集(差集)
  16. 如何破解百度云下载速度
  17. RepLKNet:不是大卷积不好,而是卷积不够大,31x31卷积了解一下 | CVPR 2022
  18. OpenCV fitline直线拟合函数学习
  19. oracle中文问号乱码,Oracle 中文记录 及 乱码 判断 说明 .(转)
  20. eCharts 自定义y轴数据

热门文章

  1. sas sql 读取最后一行数据_SAS基础编程和数据处理
  2. mysql 插入优化_MySQL批量SQL插入性能优化
  3. 用python批量下载网络图片_python 批量下载网页里的图片
  4. 悲观锁和乐观锁_带你了解MySQL中的乐观锁与悲观锁
  5. 计算机有必要报英语四级吗,我已工作了,现在有必要去考英语四级吗?还是 – 手机爱问...
  6. php mvc教程 文档,PHP培训教程教你快速打造PHP MVC框架[PHP基础教程]
  7. ubuntu和linux服务器,Linux服务器系统CentOS和Ubuntu Server如何选择? | 偶乃秋辰
  8. MUI 拍照和从系统相册选择图片上传
  9. Spring深入理解之ComponentScan___@ComponentScan 详解
  10. Java 8 Stream 流用法及语法