给定一个n节点的二叉树,写出一个O(n)时间非递归过程,将该树每个节点关键字输出,可以使用一个栈作为辅助数据结构

(算法导论第十章10.4-3)

template<typename T>
void TraverseBinaryTreeIndexByStack(const BinaryTreeNodeIndex<T>* array,const BinaryTreeNodeIndex<T>& root)
{Stack<BinaryTreeNodeIndex<T>> stack;stack.push(root);while (!stack.empty()){BinaryTreeNodeIndex<T> current = stack.pop();std::cout<<current.key<<" ";if(current.left!=-1){stack.push(array[current.left]);}if(current.right!=-1){stack.push(array[current.right]);}}}

辅助类
1⃣️BinaryTreeNodeIndex
地址链接
2⃣️Stack
地址链接
测试代码

    BinaryTreeNodeIndex<int> binaryTreeNode[10] = {BinaryTreeNodeIndex<int>(12,5,6,2),BinaryTreeNodeIndex<int>(15,7,7,-1),BinaryTreeNodeIndex<int>(4,0,9,-1),BinaryTreeNodeIndex<int>(10,5,4,8),BinaryTreeNodeIndex<int>(2,3,-1,-1),BinaryTreeNodeIndex<int>(18,-1,0,3),BinaryTreeNodeIndex<int>(7,0,-1,-1),BinaryTreeNodeIndex<int>(14,1,5,1),BinaryTreeNodeIndex<int>(21,3,-1,-1),BinaryTreeNodeIndex<int>(5,2,-1,-1),};TraverseBinaryTreeIndexByStack(binaryTreeNode,binaryTreeNode[5]);cout<<endl;

给定一个n节点的二叉树,写出一个O(n)时间非递归过程,将该树每个节点关键字输出,可以使用一个栈作为辅助数据结构(算法导论第十章10.4-3)相关推荐

  1. 给定一个n节点的二叉树,写出一个O(n)时间递归过程,将该树每个节点关键字输出(算法导论第十章10.4-2)

    给定一个n节点的二叉树,写出一个O(n)时间递归过程,将该树每个节点关键字输出 (算法导论第十章10.4-2) #include <iostream> template<typena ...

  2. 用一个单链表L实现一个队列(算法导论第十章10.2-3)

    用一个单链表L实现一个队列(算法导论第十章10.2-3) template<typename T> class HalfNode {public:T key;HalfNode* next; ...

  3. 用一个单链表L实现一个栈(算法导论第十章10.2-2题)

    用一个单链表L实现一个栈(算法导论第十章10.2-2题) template<typename T> class HalfNode {public:T key;HalfNode* next; ...

  4. 对一组同构对象用单数组表示法实现(算法导论第十章10.3-2)

    对一组同构对象用单数组表示法实现 (算法导论第十章10.3-2) 考虑到数据安全问题,多用了一个数组来处理安全问题. #ifndef C11LEARN_SINGULARGROUPSREPRESENTI ...

  5. 使用单项循环链表实现字典操作(算法导论第十章10.2-5题)

    使用单项循环链表实现字典操作(算法导论第十章10.2-5题) template<typename T> void insert(SingleCycleL<T> & l, ...

  6. 数据结构 5-3-2 二叉树前序中序后序遍历非递归实现

    一.前言 上一篇整理了几种遍历方式的递归实现,递归的实现方法都很简单,区区几句代码就可以实现,但是如果要用非递归的方法来实现就有些挑战了. 二.中序遍历 从中序遍历开始,其实非递归的方法就是把递归变成 ...

  7. n个节点的二叉树n+1_使用C ++程序将链接列表中的最后N个节点附加到第一个

    n个节点的二叉树n+1 Given a linked list and an integer n, append the last n elements of the LL to front. Ass ...

  8. 我肝了一个月,给你写出了这本 Java 开发手册!

    作者 | cxuan 来源 | 程序员cxuan 超长预警!!全文4万多字,墙裂建议收藏! 先来看一下本篇文章的思维导图吧,我会围绕下面这些内容进行讲解.内容很干,小伙伴们看完还希望不吝转发. 下面开 ...

  9. 3.为方便旅客,某航空公司拟开发一个机票预订系统。写出问题定义并分析此系统的可行性。

    3.为方便旅客,某航空公司拟开发一个机票预订系统.旅行社把预订机票的旅客信息(姓名.性别.工作单位.身份证号码,旅行时间,旅行目的地等)输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机 ...

最新文章

  1. 四肢切割_四肢瘫痪者用大脑信号和先进的假肢完成吃饭动作
  2. Leetcode题目:Rectangle Area
  3. 跟我打卡LeetCode 61旋转链表62不同路径63不同路径 II
  4. antd源码解读(4)- ButtonGroup
  5. python获取列表list里面元素的下标
  6. 2005 打开 2010 项目经验总结
  7. textarea回车不换行 小程序_微信小程序商城到底值得不值得开通?
  8. 中海达数据怎么转rinex_cors账号网最新实战教程,中海达 F61 Plus RTK连接千寻cors账号的方法...
  9. 中国大推力矢量发动机WS15 跨入 世界先进水平!
  10. C++学习 ---- 系列文章
  11. 视觉SLAM笔记(7) 欧氏变换
  12. 根据指定的commit查找对应的log
  13. 凸优化第二章凸集 2.4 广义不等式
  14. python学习(一)----基础语法
  15. 获取当前系统时间(取相对于系统时间的前一周时间)
  16. 笔记本如何关闭屏幕亮度自动调节(解决切换界面时屏幕忽明忽暗的问题)
  17. 用Java实现目录复制(包含此目录下的所有文件与目录)
  18. Unity面试经验(两天面六家,四个offer,济南)
  19. Linux并发与同步专题 (4) Mutex互斥量
  20. 基于eBox旋转编码器

热门文章

  1. Android之Only fullscreen opaque activities can request orientation
  2. 剑指offer之二叉树的高度
  3. 剑指offer之树的子结构
  4. C和指针之二维字符串数组用指针数组、数组指针、二级指针打印
  5. Android之可以做的两件坏事---破解锁屏密码和获取Wifi密码
  6. 如何隐藏地址栏中的真实地址_Firefox推出Private Relay插件:可隐藏真实邮箱地址...
  7. 中英文标点符号切换的组合键_易混标点符号:一字线(—)、短横线(-)、浪纹线(~)...
  8. 每日一笑 | 为什么Python比Java更受欢迎?
  9. 渤海发现大油田,证券会提示风险,微博回应流量造假,刘国梁制定史上最严奖惩体系,这就是今天的大新闻。...
  10. 麻省理工告诉我们男女配对的真相!