c++实现二叉树的非递归创建以及非递归先序、中序、后序遍历
二叉树的创建
思路:数组中从上到下依次放着二叉树中的元素,使用递归很容易实现,那么这里使用容器来存放之前的状态实现循环创建二叉树。
TreeNode* createTree(int *arr, int length) {
    if(length<) return NULL;
    TreeNode* root = new TreeNode(arr[]);
    deque<pair<TreeNode*,int> > route;
    route.push_back(make_pair(root,));
    while(!route.empty()) {
        TreeNode* temp = route.front().first;
        int ct = route.front().second;
        route.pop_front();
        if(*ct+<length) {
            temp->left = new TreeNode(arr[*ct+]);//创建当前节点的左叶子
            route.push_back(make_pair(temp->left,*ct+));
        }
        if(*ct+<length) {
            temp->right = new TreeNode(arr[*ct+]);//创建当前节点的右叶子
            route.push_back(make_pair(temp->right,*ct+));
        }
    }
    return root;
}
二叉树的先序、中序和后序遍历
思路:借用之前看到的一篇文章,可以使用同一套代码完成这3种遍历,主要思想是有重合元素的局部有序能使整体有序。
void PostOrder(TreeNode* root) {
    deque<pair<TreeNode*, bool> > route;
    route.push_back(make_pair(root, false));
    while(!route.empty()) {
        TreeNode* root = route.back().first;
        bool visit = route.back().second;
        route.pop_back();
        if(root==NULL)
            continue;
        if(visit) {
            cout << root->val << ' ';
        } else {//改变下面三者的顺序就可以实现三种排序
            route.push_back(make_pair(root, true));
            route.push_back(make_pair(root->right, false));
            route.push_back(make_pair(root->left, false));
        }
    }
}
c++实现二叉树的非递归创建以及非递归先序、中序、后序遍历的更多相关文章
- 如何求先序排列和后序排列——hihocoder1049+洛谷1030+HDU1710+POJ2255+UVA548【二叉树递归搜索】
		[已知先序.中序求后序排列]--字符串类型 #1049 : 后序遍历 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho在这一周遇到的问题便是:给出一棵二叉树的前序和 ... 
- 分别求二叉树前、中、后序的第k个节点
		一.求二叉树的前序遍历中的第k个节点 //求先序遍历中的第k个节点的值 ; elemType preNode(BTNode *root,int k){ if(root==NULL) return ' ... 
- LeetCode:二叉树的前、中、后序遍历
		描述: ------------------------------------------------------- 前序遍历: Given a binary tree, return the pr ... 
- HDU 1710 (二叉树的前序和中序,求后序)
		题目链接 题目大意: 输入二叉树的前序.中序遍历,请输出它的后序遍历 #include <stdio.h> #include <string.h> ; // 长度为n s1 前 ... 
- hdu1710-Binary Tree Traversals                       (由二叉树的先序序列和中序序列求后序序列)
		http://acm.hdu.edu.cn/showproblem.php?pid=1710 Binary Tree Traversals Time Limit: 1000/1000 MS (Java ... 
- 【数据结构】二叉树的遍历(前、中、后序及层次遍历)及leetcode107题python实现
		文章目录 二叉树及遍历 二叉树概念 二叉树的遍历及python实现 二叉树的遍历 python实现 leetcode107题python实现 题目描述 python实现 二叉树及遍历 二叉树概念 二叉 ... 
- 前、中、后序遍历随意两种是否能确定一个二叉树?理由?  && 栈和队列的特点和区别
		前序和后序不能确定二叉树理由:前序和后序在本质上都是将父节点与子结点进行分离,但并没有指明左子树和右子树的能力,因此得到这两个序列只能明确父子关系,而不能确定一个二叉树. 由二叉树的中序和前序遍历序列 ... 
- HDU 1710Binary Tree Traversals(已知前序中序,求后序的二叉树遍历)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1710 解题思路:可以由先序和中序的性质得到 : 先序的第一个借点肯定是当前子树的根结点, 那么在 中序 ... 
- 二叉树中序遍历,先序遍历,后序遍历(递归栈,非递归栈,Morris Traversal)
		例题 中序遍历94. Binary Tree Inorder Traversal 先序遍历144. Binary Tree Preorder Traversal 后序遍历145. Binary Tre ... 
随机推荐
- Guava之CaseFormat
			com.google.common.base.CaseFormat是一种实用工具类,以提供不同的ASCII字符格式之间的转换. 其对应的枚举常量 从以上枚举中可以看出,java程序员最常用的转换类型为 ... 
- P3155 [CQOI2009]叶子的染色
			P3155 [CQOI2009]叶子的染色 题目描述 给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根.内部结点和叶子均可)着以黑色或白色.你的着色方案应该保证根结点到 ... 
- vue2借助animate.css实现路由动画效果
			第一步: npm install animate.css --save 第二步:打开main.js import animate from 'animate.css' Vue.use(animate) ... 
- typora快捷键之速成笔记
			使用心得:用起来相当的顺手,强烈推荐小伙伴使用该工具,内置快捷功能很贴心 工具下载: https://download.csdn.net/download/lele508994993/10392197 ... 
- The Ph.D. Grind
			The Ph.D. Grind A Ph.D. Student Memoir Summary The Ph.D. Grind, a 122-page e-book, is the first know ... 
- shell逐行读取excel并执行sql
			背景:测试同学想根据一组user_id 获取token做测试,由于各种原因(数据量大,sql语句复杂),只能根据user_id一条条查,于是写了个脚本: 1, 先查询需要的user_id 导出到use ... 
- Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location
			spring-boot项目,生产环境运行一段时间后,上传图片报错,如下: threw exception [Request processing failed; nested exception is ... 
- python核心编程笔记——Chapter8
			Chapter8.条件和循环 这一章感觉有用的点并不多,在我眼里就只有迭代器,列表解析和生成器表达式值得研究而已. 8.2.循环,难度不大. #!usr/bin/env python #-*-codi ... 
- Python练习-生成器表达式-筛选与运算
			# 编辑者:闫龙 l = [10, 2, 3, 4, 5, 6, 7] l1 = [int(i)**2 for i in l] # 得到一个新列表l1,新列表中每个元素是l中对应每个元素值的平方 pr ... 
- 【杂谈】需要mark的一些东西
			https://riteme.github.io/blog/2017-10-28/oi-coding-guidelines.html https://www.luogu.org/blog/34238/ ... 
