首先,要明白二叉搜索树前序序列可以唯一确定一棵二叉搜索树。

第一步,建立根节点(序列的第一个值)

第二步,获得右子树第一个结点的偏移k(用来划分区间)

第三步,划分左右子树的区间

#include<iostream>
#include<vector>
using namespace std;
typedef struct Node* Tree;
const int N = 1010;
vector<int> hx,qx,zx;
int a[N];
struct Node{int data;Tree l,r;Node(int _data){data = _data;l = r = nullptr;}
};
// l为序列的开始部分,sz为序列的大小
void build(int l,int sz,Tree &tree){if(sz <= 0) return;tree = new Node(a[l]);int k = 1;while(l+k < sz && a[l+k] < a[l]) k++;qx.push_back(tree->data);build(l+1,k-1,tree->l);zx.push_back(tree->data); build(l+k,sz-k,tree->r);hx.push_back(tree->data);
}int main(){int n;cin>>n;for(int i = 0; i < n; i++) cin>>a[i];Tree root = nullptr;build(0,n,root); cout<<"先序遍历:"; for(auto num:qx) cout<<num<<' ';cout<<"\n中序遍历:";for(auto num:zx) cout<<num<<' ';cout<<"\n后序遍历:";for(auto num:hx) cout<<num<<' ';return 0;
}
/*
7
8 6 5 7 10 8 11
*/

二叉搜索树前序序列转中序和后序相关推荐

  1. 【CCCC】L2-004 这是二叉搜索树吗? (25分),二叉搜索树前序遍历

    problem L2-004 这是二叉搜索树吗? (25分) 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值: 其右子树中所有结点的键值大 ...

  2. [Leetcode][第109题][JAVA][有序链表转换二叉搜索树][分治][快慢指针][中序遍历]

    [问题描述][中等] [解答思路] 1. 分治 快慢指针 复杂度 class Solution {public TreeNode sortedListToBST(ListNode head) {ret ...

  3. LeetCode 1382. 将二叉搜索树变平衡(中序遍历+二分递归)

    1. 题目 给你一棵二叉搜索树,请你返回一棵 平衡后 的二叉搜索树,新生成的树应该与原来的树有着相同的节点值. 如果一棵二叉搜索树中,每个节点的两棵子树高度差不超过 1 ,我们就称这棵二叉搜索树是 平 ...

  4. 剑指Offer - 面试题36. 二叉搜索树与双向链表(中序循环/递归)

    1. 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表.要求不能创建任何新的节点,只能调整树中节点指针的指向. 特别地,我们希望可以就地完成转换操作.当转化完成以后,树中节点的左指 ...

  5. LeetCode 783. 二叉搜索树结点最小距离(中序遍历)

    1. 题目 给定一个二叉搜索树的根结点 root, 返回树中任意两节点的差的最小值. 示例:输入: root = [4,2,6,1,3,null,null] 输出: 1 解释: 注意,root是树结点 ...

  6. HDU3999 The order of a Tree【二叉搜索树 + 前序遍历】

    The order of a Tree 题意: 给定一个二叉搜索树的插入顺序,要求输出建树之后的前序遍历. 题解: 连续第二天做到二叉搜索树了,真的吹爆这个算法,从二叉树啥也不懂,到简单搜索树直接秒杀 ...

  7. 二叉搜索树python,代表python中的二叉搜索树

    how do i represent binary search trees in python? 解决方案class Node(object): def __init__(self, payload ...

  8. 【数据结构】二叉搜索树的python实现

    [数据结构]二叉搜索树的python实现 二叉搜索树是以二叉树来组织的,对于一个二叉搜索树的节点,其左子树节点的元素值都不大于该节点元素值,其右子树节点的元素值都不小于该节点的元素值. 首先定义一个初 ...

  9. 二叉排序树的后序遍历序列必然是递增的_剑指offer 33——二叉搜索树的后序遍历序列...

    本题主要在于考察对二叉搜索树和后序遍历的理解. 原题 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同 ...

  10. 173. 二叉搜索树迭代器/94. 二叉树的中序遍历/145. 二叉树的后序遍历/98. 验证二叉搜索树

    2020-05-12 1.题目描述 二叉搜索树迭代器 2.题解 对于二叉搜索树而言,进行中序遍历就可以得到其有序序列,我们可以先对树进行遍历,将结果保存在 vector中,然后进行计算即可. 3.代码 ...

最新文章

  1. oracle日志备份少数据库,oracle 账号锁定日志Oracle数据库全量备份恢复和部分备份恢复...
  2. 配置 Cisco ASA Static IP Addressing or DHCP for IPSec ××× Client
  3. android menu分割线,给 NavigationView 的Menu的分割线 设置高度和颜色
  4. 不会几个框架,都不好意思说搞过前端: Vue.js - 60分钟快速入门
  5. 柔性体没有应变_边坡防护终结篇!柔性防护系统(主被动网)知识总结!
  6. day32 java的多线程(4)synchronized
  7. Aruba7010 默认密码_钟祥人注意!手机这个密码必须设,否则危险!
  8. 智能一代云平台(三十三):log4j日志研究
  9. xsd 生成 java 类_如何从Java类生成XSD
  10. redis集群的远程管理与监控
  11. 乒乓球比赛赛程_乒乓球赛程_如何组织一场乒乓球赛
  12. 【2021全国高校计算机能力挑战赛C++题目】17.信息整理 某机房上线了一套系统,和每台计算机都相连,以便监控各计算机相关外设的运行状态。
  13. [译]How browsers work
  14. Spring data报错:Inferred type 'S' for type parameter 'S' is not within its bound;
  15. mysql 存储ip 且 ip 分段
  16. 7-32 哥尼斯堡的“七桥问题” (欧拉回路)(PAT算法题目集)
  17. 录屏软件OBS录屏时噪声大的解决办法
  18. 许昌学院计算机学院张伶俐,【优秀毕业生故事系列】之四:厉害了,我的班!...
  19. 如何在CentOS 7中设置或更改主机名
  20. (UE4 4.27)自定义PrimitiveComponent

热门文章

  1. 国内各大安卓市场有ASO优化吗?安卓应用市场aso优化
  2. ubuntu查看磁盘分区使用情况命令df
  3. 阿里云datav自定义组件,引入高德地图API
  4. 最受Java程序员欢迎的大数据工具排名
  5. YouTube广告 || 一次性让你了解个够
  6. ABP Framework 5.3.0 版本新增功能和变更说明
  7. win10下移动pagefiles.sys文件到D盘
  8. 编程c 语言怎么表示倍数,C语言里怎么表示是3的倍数
  9. 软件测试工程师笔试题带答案(一)
  10. 2019腾讯广告算法大赛思路(转自简书)有所改动(标蓝)