#include<iostream>
#include<stack>
#define N 7
using namespace std;typedef struct node
{struct node *leftChild;struct node *rightChild;int data;
}BiTreeNode, *BiTree;// 生成一个结点
BiTreeNode *createNode(int i)
{BiTreeNode * q = new BiTreeNode;q->leftChild = NULL;q->rightChild = NULL;q->data = i;return q;
}BiTree createBiTree()
{BiTreeNode *p[N];int i;for(i = 0; i < N; i++)p[i] = createNode(i + 1);// 把结点连接成树for(i = 0; i < N/2; i++){p[i]->leftChild = p[i * 2 + 1];p[i]->rightChild = p[i * 2 + 2];}return p[0];
}void preOrderTraverse(BiTree T)
{if(NULL == T)return;BiTreeNode *p = T;stack<BiTreeNode *> s;s.push(T);while(!s.empty()){// 根进根出p = s.top();cout << p->data << " ";s.pop();// 根的右孩子被压入栈if(NULL != p->rightChild)s.push(p->rightChild);//根的左孩子被压入栈if(NULL != p->leftChild)s.push(p->leftChild); } // end while(!s.empty()) cout << endl;
}int main()
{BiTree T = createBiTree();cout << "先序遍历:" << endl;preOrderTraverse(T);return 0;
}

利用非递归方法实现二叉树的先序遍历相关推荐

  1. 利用非递归方法实现二叉树的中序遍历

    #include<iostream> #include<stack> #define N 7 using namespace std;typedef struct node { ...

  2. 编写非递归算法实现二叉树的中序遍历

    题目要求:编写非递归算法实现二叉树的中序遍历. 遍历代码: void InOrderTraverseNR(BiTree T) {SqStack stack;InitStack(&stack); ...

  3. 二叉树的先序遍历(非递归)

    虽然递归简单理解,但是用递归内存开销大,耗时长,性能往往不如非递归方式 所以这里通过栈,用非递归方法实现二叉树的先序遍历 二叉树的存储结构定义: typedef struct node{int dat ...

  4. 二叉树遍历的递归、非递归方法(前序、中序、后序,层序)——Java实现

    1. 二叉树的前序遍历(深度优先遍历) 二叉树的节点定义 public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(in ...

  5. 二叉树的中序遍历非递归方法(算法导论第三版12.1-3)

    二叉树的中序遍历非递归方法(算法导论第三版12.1-3) 1⃣️用栈实现 template<typename T> void inorder_tree_walk_non_recursion ...

  6. 二叉树的中序遍历 递归与非递归

    94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [ ...

  7. SWUSTOJ #978 输出利用先序遍历创建的二叉树的中序遍历序列

    SWUSTOJ #978 输出利用先序遍历创建的二叉树的中序遍历序列 题目 输入 输出 样例输入 样例输出 源代码 题目 利用先序递归遍历算法创建二叉树并输出该二叉树的中序遍历序列.先序递归遍历建立二 ...

  8. #swust oj978,979,980输出利用先序遍历创建的二叉树的中序遍历序列,后序遍历序列,层次遍历序

    输出利用先序遍历创建的二叉树的中序遍历序列,后序遍历序列,层次遍历序列 ***层次遍历思路: 1.初始化一个队列 2.把根节点指针入队 3.队列非空时:出队列取得一个结点指针,访问该节点,若该节点的左 ...

  9. SWUST OJ 978: 输出利用先序遍历创建的二叉树的中序遍历序列

    题目描述 利用先序递归遍历算法创建二叉树并输出该二叉树的中序遍历序列.先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建 ...

最新文章

  1. Python到底有多强大?只需 15 行代码即可进行人脸检测
  2. Can't call rollback when autocommit=true
  3. 16年寒假随笔(1)
  4. Android 自定义View -- 简约的折线图
  5. 中国最好的产品经理100人
  6. 设计模式之观察者模式——猫抓老鼠2
  7. 笔记本 亮度 无法调解
  8. 在百度地图上展示dwg/dxf
  9. 我的首篇博客——记录学习,不忘初心
  10. python-docx文档高亮显示
  11. 世界各国电源插头插座形式
  12. 兔子吃狼 引发的人力资源故事
  13. UI设计——网站收藏
  14. 程序员到30岁之后应该何去何从?治恐慌
  15. mapboxGL实现室内地图
  16. 机器视觉面试宝典--深度学习补缺补漏篇
  17. html5 video 视频标签详解
  18. devOps如何建设?众安devOps实践成功构建,促进保险科技迭代升级
  19. 工厂模式+策略模式组合实现电商促销活动
  20. 简单、好用的免费在线文字转语音软件

热门文章

  1. XHTML Strict和Transitional 的区别
  2. 2、FreeRTOS任务相关API函数
  3. day8--socketserver
  4. 让MySQL支持Emoji表情 mysql 5.6
  5. linux 之进程间通信-------------InterProcess Communication
  6. BorderContainer的圆角问题
  7. 一个好的设计应当具备哪些要素
  8. 如何编写企业解决方案书(转)
  9. 机器学习知识点(七)决策树学习算法Java实现
  10. 小憩,味一二 ——08年3月编程手札